请教jsonJSON.parse()中双引号如何解决
请问jsonJSON.parse()中双引号怎么解决
从后台返回数据是 json类型的,使用的是 Newtonsoft.Json中的JsonConvert.SerializeObject()这个方法。如下所示:
注意:a1值中的双引号已经加上了转义符。但是在使用 JSON.parse(s);时,会报错,错误如下:
SyntaxError: JSON.parse: expected ',' or '}' after property value in object at line 1 column 39 of the JSON data
测试发现,如果把<a href=\"#\">dd</a>改成以下两种方法,都可以解析成功
请问这个怎么处理?先答对先给分哦!~
--------------------------------------------------------------------------------
很奇怪的是,var s = '[{"a":"aa","b":"bbb"},{"a1":"<a href=\"#\">dd</a>"}]';这个字符串,在一些 在线json解析的网站上,是可以解析成功的。
求大神解答
------解决思路----------------------
s是字符串 值为"[{"a":"aa","b":"bbb"},{"a1":"<a href="#">dd</a>"}]" 这串json格式是错误的
序列化json的时前后不要加引号
直接用 var s=[{"a":"aa","b":"bbb"},{"a1":"<a href=\"#\">dd</a>"}]
------解决思路----------------------
你不仅要对"转移,还要对\转移,所以要3个\
------解决思路----------------------
那你就不要在外面再加单引号了,直接var s = <%=aaa%>;这个s就已经是json了。
另外,你说的[{"a":"aa","b":"bbb"},{"a1":"<a href=\"#\">dd</a>"}]在网上上解析是可以的,那是因为你输入了这样的文字进去,他取那个输入框的value的时候,浏览器会自行把\加上转义符。
只是你看value的时候是一个字符串,字符串里面是看不见转义符的。
------解决思路----------------------
这是返回的数据:
从数据里面看,使用eval时 在a标签中 [{"a":"aa","b":"bbb"},{"a1":"<a href="就这样断开了。
所以要使用转义,但是如果直接使用 \" 转义后也会变成 单引号 " 在使用eval解析时还是会出错。
你可以先把 “ 去掉。然后 eval
------解决思路----------------------
------解决思路----------------------
JSON.parse('[{"a":"aa","b":"bbb"},{"a1":"<a href=\\\"#\\\">dd</a>"}]')
从后台返回数据是 json类型的,使用的是 Newtonsoft.Json中的JsonConvert.SerializeObject()这个方法。如下所示:
var s = '[{"a":"aa","b":"bbb"},{"a1":"<a href=\"#\">dd</a>"}]';
注意:a1值中的双引号已经加上了转义符。但是在使用 JSON.parse(s);时,会报错,错误如下:
SyntaxError: JSON.parse: expected ',' or '}' after property value in object at line 1 column 39 of the JSON data
测试发现,如果把<a href=\"#\">dd</a>改成以下两种方法,都可以解析成功
<a href=\'#\'>dd</a>
<a href=\\"#\\">dd</a>
请问这个怎么处理?先答对先给分哦!~
--------------------------------------------------------------------------------
很奇怪的是,var s = '[{"a":"aa","b":"bbb"},{"a1":"<a href=\"#\">dd</a>"}]';这个字符串,在一些 在线json解析的网站上,是可以解析成功的。
求大神解答
------解决思路----------------------
s是字符串 值为"[{"a":"aa","b":"bbb"},{"a1":"<a href="#">dd</a>"}]" 这串json格式是错误的
序列化json的时前后不要加引号
直接用 var s=[{"a":"aa","b":"bbb"},{"a1":"<a href=\"#\">dd</a>"}]
------解决思路----------------------
var s = '[{"a":"aa","b":"bbb"},{"a1":"<a href=\\\"#\\\">dd</a>"}]';
JSON.parse(s)
你不仅要对"转移,还要对\转移,所以要3个\
------解决思路----------------------
那你就不要在外面再加单引号了,直接var s = <%=aaa%>;这个s就已经是json了。
另外,你说的[{"a":"aa","b":"bbb"},{"a1":"<a href=\"#\">dd</a>"}]在网上上解析是可以的,那是因为你输入了这样的文字进去,他取那个输入框的value的时候,浏览器会自行把\加上转义符。
只是你看value的时候是一个字符串,字符串里面是看不见转义符的。
------解决思路----------------------
这是返回的数据:
[{"a":"aa","b":"bbb"},{"a1":"<a href="#">dd</a>"}]
从数据里面看,使用eval时 在a标签中 [{"a":"aa","b":"bbb"},{"a1":"<a href="就这样断开了。
所以要使用转义,但是如果直接使用 \" 转义后也会变成 单引号 " 在使用eval解析时还是会出错。
你可以先把 “ 去掉。然后 eval
------解决思路----------------------
var s = '[{"a":"aa","b":"bbb"},{"a1":"<a href=\\"#\\">dd</a>"}]';
alert(s);
o = JSON.parse(s.replace(/\\\"/, '\\"'));
alert(JSON.stringify(o));
alert(o[1].a1)
------解决思路----------------------
JSON.parse('[{"a":"aa","b":"bbb"},{"a1":"<a href=\\\"#\\\">dd</a>"}]')