JSON.parse解析json字符串遇换行符报错 原因以及如何解决

因为正确的答案是 '"\\n"'

parse 解析的是 stringify 后的结果, 对于字符串 "\n" 的 stringify 结果是 '"\\n"'

一般来说, 你可以直接在编辑器敲回车来换行. 但是在代码中, 你要在字符串中存储一个换行符, 在 `` 多行字符串没有出来之前, 你是无法在 "" 里面敲回车的, 只能用转义字符 \n 代替, 虽然你写下的是两个, 但是这个字符串的长度为1, 在使用这个字符串时 \n 就被解释为码点为 0x0a 的字符

所以如果要记录字面的 \n, 那么 stringify 结果要对 \ 进行转义, 结果为 \\n , 这样就记录下了你输入的两个字符

产生这个疑问的原因主要是: 对于转义字符, 你写下的和看到的不是等同的, 转义字符是用一个以上的字符表示单个无法直接输出字符, 是一种编码形式

你写下 \n 以为用两个字符, 实际上是代表一个换行符, 码点为 0x0a

而 JSON 标准中对字符的要求是 '0020'.'10FFFF'-'"'-'\''\' escape

0x0a 不属于这个范围, 自然报错了.

另外补充 eval('"\n"') 报错的原因, eval 是将字符串的内容当作 js 代码. 而上面说了, 你是无法在 "" 里面敲回车的, 所以自然是不合法的 js 代码, 就报错了

如果换成 eval('`\n`') 就不会报错了

解决:字符串需要进行转义。

示例:

var jsonObj=JSON.parse(json.replace(/\n/g,"\\n").replace(/\r/g,"\\r"));

 在开发中,有很多转义符,都是需要处理的,如若频繁使用,建议封装一下

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: 当使用JSON.parse解析特殊字符时,可能会报错。为了解决这个问题,可以使用引用\[2\]中提供的handleSpecialCharacters函数来处理特殊字符。该函数会将特殊字符进行转义,然后再进行JSON.parse解析。这样可以避免报错。另外,还可以使用引用\[1\]中提供的方法,将含有特殊字符的字符串进行替换,然后再进行JSON.parse解析。这样也可以解决报错的问题。 #### 引用[.reference_title] - *1* [JSON.parse解析json字符串换行符报错 原因以及如何解决](https://blog.csdn.net/m0_66288747/article/details/129931685)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [【前端关于JSON.parse解析报错处理方案】](https://blog.csdn.net/beiluoL/article/details/125085711)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [小程序选取上传图片以及视频,JSON.parse解析返回值报错](https://blog.csdn.net/m0_46978096/article/details/125327558)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值