JSON Parsing error with backslash

你。 提交于 2020-01-24 06:36:26

问题


I have been trying to figure out why the following JSON input will be failed to parse in JSON.parse function.

{"World":"Hello\\Test"}

The json above is being returned by JSON.NET.

I have tried multiple methods to get this working. As you can see the backslash is escaped and https://jsonlint.com/ is able to parse it.

I have a failing sample at https://jsfiddle.net/ckp0uc0p/3/ as well.

Any help will be appreciated.


回答1:


The best way to inject JSON into JavaScript source code (when generating the JavaScript with a server side language), is to inject it directly where you need it, not inside a string literal that needs to be parsed.

For example:

var foo = <json blob>;

so that the result will be

var foo = {"World":"Hello\\Test"};

JavaScript will interpret this as an object literal resulting in an object, which is what you want to get anyway. This avoids all the problems with "nested" escape sequences.




回答2:


You need to add two \\ for every backslash you want to have it displayed. If you're parsing a json, to display 2 backslashes you need to add 4.

// inside a string to be parsed as json
var json = '{"World":"Hello\\\\Test"}'
console.log(JSON.parse(json))

// directly in an object
var object = {"World": "Hello\\Test"}
console.log(object)



回答3:


try
{
  var res = '{"World":"Hello\\\\Test"}';
	var s = JSON.parse(res);
  console.log(JSON.stringify(s));
  
} catch(error) {
	alert(error);
}


来源:https://stackoverflow.com/questions/43769456/json-parsing-error-with-backslash

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!