JSON.stringify转义的问题

鸣鸣Amadues 2019-06-06 04:35:16
var continents2 = {};

continents2.id = '1';
continents2.name = 'E\"ric';

var jsonText = JSON.stringify(continents2);

打印出来是这样的:{"id":"1","name":"E\"ric"}

但期望是这样的{"id":"1","name":"E\\\"ric"}
是不是这个stringify有问题?
...全文
1614 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
鸣鸣Amadues 2019-06-06
  • 打赏
  • 举报
回复
引用 11 楼 天际的海浪 的回复:
这种情况一般是在把字符串输出到js代码中之前先做替换。如asp中 var str = '<%=replace(str,"\","\\")%>';
好像没有那种简单的,我要转义的是JSON字符串,\本身是也被其他地方用的,比如双引号转义\",不能简单地替换\吧。 其实感觉影响的也就是反斜杠,应该问题不太大,不过最好还是可以做得完善一些。
天际的海浪 2019-06-06
  • 打赏
  • 举报
回复
引用 10 楼 鸣鸣Amadues 的回复:
[quote=引用 9 楼 天际的海浪 的回复:] [quote=引用 8 楼 鸣鸣Amadues 的回复:] [quote=引用 7 楼 天际的海浪 的回复:] \ 在字符串中是个转义符。意思是将\与它后面的一个字符转换成另一个意义的字符。
在我工作的开发语言里,\也可以作为字符串,转义后是\\[/quote] js中不是这样[/quote] 现在这两个平台要做系统集成,如果转义出来的不一样,那解析出来的可能也不一样,那文字处理部分可能会有问题了。[/quote] 这种情况一般是在把字符串输出到js代码中之前先做替换。如asp中 var str = '<%=replace(str,"\","\\")%>';
鸣鸣Amadues 2019-06-06
  • 打赏
  • 举报
回复
引用 9 楼 天际的海浪 的回复:
[quote=引用 8 楼 鸣鸣Amadues 的回复:] [quote=引用 7 楼 天际的海浪 的回复:] \ 在字符串中是个转义符。意思是将\与它后面的一个字符转换成另一个意义的字符。
在我工作的开发语言里,\也可以作为字符串,转义后是\\[/quote] js中不是这样[/quote] 现在这两个平台要做系统集成,如果转义出来的不一样,那解析出来的可能也不一样,那文字处理部分可能会有问题了。
天际的海浪 2019-06-06
  • 打赏
  • 举报
回复
引用 8 楼 鸣鸣Amadues 的回复:
[quote=引用 7 楼 天际的海浪 的回复:] \ 在字符串中是个转义符。意思是将\与它后面的一个字符转换成另一个意义的字符。
在我工作的开发语言里,\也可以作为字符串,转义后是\\[/quote] js中不是这样
鸣鸣Amadues 2019-06-06
  • 打赏
  • 举报
回复
引用 7 楼 天际的海浪 的回复:
\ 在字符串中是个转义符。意思是将\与它后面的一个字符转换成另一个意义的字符。
在我工作的开发语言里,\也可以作为字符串,转义后是\\
天际的海浪 2019-06-06
  • 打赏
  • 举报
回复
\ 在字符串中是个转义符。意思是将\与它后面的一个字符转换成另一个意义的字符。
鸣鸣Amadues 2019-06-06
  • 打赏
  • 举报
回复
引用 5 楼 天际的海浪 的回复:
[quote=引用 4 楼 鸣鸣Amadues 的回复:] [quote=引用 1 楼 漠子凉 的回复:]

var continents2 = {};

  continents2.id = '1';
  continents2.name = 'E\\\"ric';

  var jsonText = JSON.stringify(continents2);
  console.log(jsonText)
这个stringify确实带转义效果,但是为什么\"不是转义成\\\"呢?在其他语言里是这样的[/quote] 因为 \ 在字符串中同样也是转义符。\" 会转换成 " ,也就是字符串表达式的结果中没有 \ 这个字符。 alert(continents2.name)显示的是 E"ric 用JSON.stringify()转换时也只会是反过来把E"ric中的 " 转换回 \" 如果希望在字符串结果中出现 \ 字符就要把一个\ 写成两个 \\ continents2.name = 'E\\"ric'; [/quote] 所以单单一个\会被忽略是吗?
天际的海浪 2019-06-06
  • 打赏
  • 举报
回复
引用 4 楼 鸣鸣Amadues 的回复:
[quote=引用 1 楼 漠子凉 的回复:]

var continents2 = {};

  continents2.id = '1';
  continents2.name = 'E\\\"ric';

  var jsonText = JSON.stringify(continents2);
  console.log(jsonText)
这个stringify确实带转义效果,但是为什么\"不是转义成\\\"呢?在其他语言里是这样的[/quote] 因为 \ 在字符串中同样也是转义符。\" 会转换成 " ,也就是字符串表达式的结果中没有 \ 这个字符。 alert(continents2.name)显示的是 E"ric 用JSON.stringify()转换时也只会是反过来把E"ric中的 " 转换回 \" 如果希望在字符串结果中出现 \ 字符就要把一个\ 写成两个 \\ continents2.name = 'E\\"ric';
鸣鸣Amadues 2019-06-06
  • 打赏
  • 举报
回复
引用 1 楼 漠子凉 的回复:

var continents2 = {};

  continents2.id = '1';
  continents2.name = 'E\\\"ric';

  var jsonText = JSON.stringify(continents2);
  console.log(jsonText)
这个stringify确实带转义效果,但是为什么\"不是转义成\\\"呢?在其他语言里是这样的
天际的海浪 2019-06-06
  • 打赏
  • 举报
回复
var continents2 = {}; continents2.id = '1'; continents2.name = 'E\"ric'; continents2.name = JSON.stringify(continents2.name).slice(1,-1); var jsonText = JSON.stringify(continents2);
鸣鸣Amadues 2019-06-06
  • 打赏
  • 举报
回复
引用 1 楼 漠子凉 的回复:

var continents2 = {};

  continents2.id = '1';
  continents2.name = 'E\\\"ric';

  var jsonText = JSON.stringify(continents2);
  console.log(jsonText)
我想要函数实现转义,不是手动转
漠子凉 2019-06-06
  • 打赏
  • 举报
回复

var continents2 = {};

  continents2.id = '1';
  continents2.name = 'E\\\"ric';

  var jsonText = JSON.stringify(continents2);
  console.log(jsonText)

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧