首页 > 解决方案 > 带有 HTML 内容的 JSON 响应

问题描述

我正在咨询一个返回 JSON 对象且其中一个值格式错误的 API。它包含 \r 和 \n,当我尝试对其进行 JSON.parse 时,它​​给了我一个错误。我试过用 JSON.stringify 把它变成一个字符串并替换 \r 和 \n 但没有运气,它确实删除了字符但是当我尝试再次解析它时它不起作用。

回复

            {
            "seller_store_name": "test",
            "seller_store_description": "<blockquote>
<p>ewffwewef</p>
<p>wefwef</p>
<p>&nbsp;</p>
<table>
<tbody>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>fewfewf</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>efwfewf</td>
</tr>
</tbody>
</table>
</blockquote>",
            "seller_profile_picture":"",
            "seller_profile_picture_default": "https://test.com/",
            "seller_banner": "",
            "seller_banner_default": "https://test.com/"
        }

尝试1,转成字符串,去掉\r和\n字符

sellerData = JSON.stringify(e);

"            {\n            \"seller_store_name\": \"test\",\n            \"seller_store_description\": \"<blockquote>\r\n<p>ewffwewef</p>\r\n<p>wefwef</p>\r\n<p>&nbsp;</p>\r\n<table>\r\n<tbody>\r\n<tr>\r\n<td>&nbsp;</td>\r\n<td>&nbsp;</td>\r\n<td>fewfewf</td>\r\n</tr>\r\n<tr>\r\n<td>&nbsp;</td>\r\n<td>&nbsp;</td>\r\n<td>efwfewf</td>\r\n</tr>\r\n</tbody>\r\n</table>\r\n</blockquote>\",\n            \"seller_profile_picture\":\"\",\n            \"seller_profile_picture_default\": \"https://test.com\",\n            \"seller_banner\": \"\",\n            \"seller_banner_default\": \"https://test.com\"\n        }\n    "

sellerData = sellerData.replace(/\\r/g,"").replace(/\\n/g,"");
sellerData = JSON.parse(sellerData);

这成功地删除了字符,但是当我再次尝试解析数据时,它并没有变成一个对象,它仍然是一个字符串。

尝试2,基本解析当我尝试解析它时,它给了我一个错误

sellerData = JSON.parse(String(e));

Unexpected token in JSON at position 126

任何帮助,将不胜感激。不幸的是,我无法修改来自 API 的响应。

标签: javascriptjson

解决方案


尝试这个

sellerData = sellerData.replace(/\\r\\n/g, "");

我认为这是因为 \r\n,所以应该删除它。


推荐阅读