如何使用 Javascript 解析 JSON 响应,以便不再转义换行符?[关闭]

How do I parse a JSON response with Javascript so newlines are no longer escaped? [closed]

提问人:Garrett Massman 提问时间:11/15/2023 最后编辑:Garrett Massman 更新时间:11/15/2023 访问量:32

问:


这个问题是由错别字或无法再现的问题引起的。虽然类似的问题可能在这里是主题,但这个问题的解决方式不太可能帮助未来的读者。

5天前关闭。

我的应用程序使用在 python 中内置的 JSON API。它将JSON编码的数据返回到前端,需要对其进行解析并显示给用户。下面是一个示例 API(省略安全详细信息):

curl -i 'http://localhost:5000/api`

HTTP/1.1 200 OK
Server: Werkzeug/2.3.7 Python/3.11.1
Date: Wed, 15 Nov 2023 01:28:09 GMT
Content-Type: application/json
Content-Length: 32
Connection: close

{"data": "this\\nis\\na\\ntest"}%

前端 Svelte 应用用于从后端检索数据。它处理 using 以使对象可用于应用程序:fetch()Response.text()JSON.parse()

const respText = await resp.text();
const respData = JSON.parse(respText);

> console.log(respData)
{data: 'this\\nis\\na\\ntest'}

这是我的问题:为什么不取消转义字符串中的换行符?我希望结果是 ,但相反,字符串包含后端发送的相同转义换行符。JSON.parse(){data: 'this\nis\na\ntest'}

当我在Chrome DevTools中手动解析有效负载时,我看到了预期的结果:

> JSON.parse(`{"data": "this\\nis\\na\\ntest"}`)
{data: 'this\nis\na\ntest'}

为什么在我的应用程序中运行的代码的行为不同?这似乎是一个非常奇怪的行为。我将感谢任何人的建议或帮助来理解这个问题。我已经搜索了 stackoverflow 和 github,但找不到与此类似的问题。提前致谢!

JavaScript JSON 浏览器 Web 应用程序

评论

0赞 James 11/15/2023
你试过了吗?\n
0赞 deceze 11/15/2023
JSON 文本表示它包含两个字符“\n”。它显式包含换行符,它包含字符序列反斜杠-n。因为后端产生这个输出。如果你打算嵌入换行符,那么你的后端输出换行符。
0赞 deceze 11/15/2023
将其复制粘贴到控制台时,您会看到不同的结果,因为转义序列被解释两次:一次是 Javascript 字符串文本,另一次是 JSON。
0赞 Garrett Massman 11/15/2023
我真的不明白为什么这个问题被否决并关闭了......后端无法在响应中返回 \n,因为它不是有效的 JSON。它必须以 \\n 的形式返回转义换行符。我很欣赏你的评论@deceze但我仍然不明白为什么在两个不同的上下文中完全相同的字符序列会产生不同的结果。
0赞 deceze 11/15/2023
\n在JSON中是完全有效的,并且表示换行符,正是您想要的!

答: 暂无答案