为了账号安全,请及时绑定邮箱和手机立即绑定

JS解析带有双引号内容的JSON字符串时的报错问题

JS解析带有双引号内容的JSON字符串时的报错问题

GCT1015 2018-08-13 17:17:04
用nodejs写了个工具来将指定目录下的html文件名和文件内容作为键值对存储为一个对象,然后将这个对象使用JSON.stringify()转化为字符串后存储为另外一个文件。现在的问题是, 当文件内容里面含有双引号的时候, 会出现报错的情况, 但是在原JSON文件里, 双引号是转义了的来着。 是我哪一部分没有整对吗?如下图所示: 如果直接在浏览器里定义一个对象并添加双引号包含的内容的时候, 转化为json字符串后再打印字符串能够看到转义符号, 但是直接复制过来的json字符串里明明有转义符号, 但是之后再打印的时候就没有了, 这是为啥。。。var json = '{"test":"<div>测试测试测试测试测试</div>","test2":"<div class=\"container\">\r\n  <div class=\"ext\"></div>\r\n</div>\r\n<div class=\"left\">\r\n  left\r\n</div>\r\n<div class=\"right\">\r\n  right\r\n</div>\r\n","test3":"<div class=\"container\">\r\n  <div class=\"left\">\r\n\r\n  </div>\r\n  <div class=\"right\">\r\n\r\n  </div>\r\n</div>\r\n"}';JSON.parse(json); // errorPS: 直接require()那个文件的话也能够正常读取
查看完整描述

1 回答

?
海绵宝宝撒

TA贡献1809条经验 获得超8个赞

很简单一次转义是不够的, 自己理解一下

var json = '{"test":"<div>测试测试测试测试测试</div>","test2":"<div class=\\"container\\">\\r\\n  <div class=\\"ext\\"></div>\\r\\n</div>\\r\\n<div class=\\"left\\">\\r\\n  left\\r\\n</div>\\r\\n<div class=\\"right\\">\\r\\n  right\\r\\n</div>\\r\\n","test3":"<div class=\\"container\\">\\r\\n  <div class=\\"left\\">\\r\\n\\r\\n  </div>\\r\\n  <div class=\\"right\\">\\r\\n\\r\\n  </div>\\r\\n</div>\\r\\n"}';
JSON.parse(json);

update下:

字面量'\"'会是"还是\"


查看完整回答
反对 回复 2018-09-20
  • 1 回答
  • 0 关注
  • 2782 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信