Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/467.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JSON Javascript转义_Javascript_Json - Fatal编程技术网

JSON Javascript转义

JSON Javascript转义,javascript,json,Javascript,Json,下面是我的一些动态JSON示例,我遇到的问题是正确地转义所有内容,以便由JSON.parse或Jquery.parseJSON正确处理,但由于某些原因,它目前不是。我试着替换所有的引号,但它解决不了任何问题 var Json = '{"resolved_id":"244296544","resolvedUrl":"http:\/\/www.engadget.com\/2012\/11\/01\/windows-phone-for-mac\/","host":"engadget.com","tit

下面是我的一些动态JSON示例,我遇到的问题是正确地转义所有内容,以便由JSON.parse或Jquery.parseJSON正确处理,但由于某些原因,它目前不是。我试着替换所有的引号,但它解决不了任何问题

var Json = '{"resolved_id":"244296544","resolvedUrl":"http:\/\/www.engadget.com\/2012\/11\/01\/windows-phone-for-mac\/","host":"engadget.com","title":"Windows Phone 7 Connector for Mac updated for WP8, rebranded simply as \'Windows Phone\'","datePublished":"2012-11-01 04:49:00","timePublished":1351763340,"responseCode":"200","excerpt":"For Mac users who prefer Microsoft as their mobile partner, Windows Phone 7 Connector has been the one bridging the divide so far. The sync app has just been updated to v3.0, gaining support for Windows Phone 8 and a concise new name -- \"Windows Phone\" -- to match its Windows 8 counterpart.","authors":{"5437327":{"author_id":"5437327","name":"Deepak Dhingra","url":"http:\/\/www.engadget.com\/editor\/deepak-dhingra"}},"images":{"1":{"item_id":"244296544","image_id":"1","src":"http:\/\/www.blogcdn.com\/www.engadget.com\/media\/2012\/11\/win-phone-for-mac-1351752168.jpg","width":"0","height":"0","credit":"","caption":""}},"videos":"","wordCount":116,"isArticle":1,"isVideo":0,"isIndex":0,"usedFallback":0,"article":"\n<a href=\"http:\/\/www.engadget.com\/2012\/11\/01\/windows-phone-for-mac\/\" nodeIndex=\"493\"><img src=\"http:\/\/www.blogcdn.com\/www.engadget.com\/media\/2012\/11\/win-phone-for-mac-1351752168.jpg\" \/><span class=\"ril_caption\"> <cite><\/cite><\/span><\/a>\n<p nodeIndex=\"91\" scoreAddedToParent=\"37\">For Mac users who prefer Microsoft as their mobile partner, <a href=\"http:\/\/www.engadget.com\/2011\/08\/31\/windows-phone-7-mango-will-play-nicer-with-macs-update-your-con\/\" nodeIndex=\"495\">Windows Phone 7 Connector<\/a> has been the one bridging the divide so far. The sync app has just been updated to v3.0, gaining support for <a href=\"http:\/\/www.engadget.com\/2012\/10\/29\/windows-phone-8-review\/\" nodeIndex=\"496\">Windows Phone 8<\/a> and a concise new name -- \"Windows Phone\" -- to match its <a href=\"http:\/\/www.engadget.com\/2012\/10\/29\/microsft-adds-windows-phone-app-to-windows-store\/\" nodeIndex=\"497\">Windows 8 counterpart<\/a>. The new app plays well with <a href=\"http:\/\/www.engadget.com\/tag\/RetinaMacbookPro\/\" nodeIndex=\"498\">Retina Macs<\/a> too, while other goodies in the changelog include drag-and-drop capability for transferring files in either direction, along with support for iPhoto 9.3.2 and Aperture 3.3.2. Incoming WP8 devices such as the <a href=\"http:\/\/www.engadget.com\/2012\/10\/29\/htc-8x-review-windows-phone-8s-compact-flagship\/\" nodeIndex=\"499\">HTC 8X<\/a> and the <a href=\"http:\/\/www.engadget.com\/2012\/10\/04\/nokia-lumia-920-for-atandt-hands-on-a-windows-phone-8-flagship-wi\/\" nodeIndex=\"500\">Lumia 920<\/a> will also get enhanced ringtone features and allow battery life to be monitored via the app. Persuaded? Then collect your goods at the source link below.<\/p>\n\n"}';
var Json='{“resolved\u id:“244296544”,“resolvedUrl:“http:\/\/www.engadget.com\/2012\/11\/01\/windows phone for mac\/”,“host:“engadget.com”,“title:“windows phone 7 mac接口为WP8更新,改名为“windows phone\”,“datePublished:“2012-11-01 04:49:00”,“timePublished:”1351763340,“responseCode:“200”,“摘录”::”“对于喜欢微软作为其移动合作伙伴的Mac用户来说,Windows Phone 7 Connector是迄今为止弥合分歧的一款。同步应用程序刚刚更新到v3.0,获得了对Windows Phone 8的支持,并获得了一个简洁的新名称--“Windows Phone”---以匹配其Windows 8对应版本。”,“authors”:{“5437327”:{“author\u id”:“5437327”,“name”:”Deepak Dhingra,url:“http:\/\/www.engadget.com\/editor\/Deepak Dhingra”},“图像:{“1:{”项目id:“244296544”,“图像id:“1”,“src:“http:\/\/www.blogcdn.com\/www.engadget.com\/media\/2012\/11\/win-phone-for-mac-1351752168.jpg”,“宽度:”,“0”,“高度:”,“学分:”,“字幕:”,“视频:”,“wordCount:“116”,视频:“,“Isacle:”isIndex:“0”usedFallback“:0,”article:“\n\n

对于喜欢微软作为移动合作伙伴的Mac用户,Windows Phone 7连接器是迄今为止弥合分歧的一个连接器。同步应用程序刚刚更新到v3.0,获得了对Windows Phone 8的支持,并获得了一个简洁的新名称--“Windows Phone”--与Windows 8对应。新的应用程序与Retina Mac也有很好的配合,而changelog中的其他优点包括在任意方向传输文件的拖放功能,以及对iPhoto 9.3.2和Aperture 3.3.2的支持。HTC 8X和Lumia 920等新的WP8设备也将获得增强的铃声功能并允许通过应用程序监控电池寿命。是否同意?然后在下面的源链接中收集您的商品。\n\n“}”;


最后一段:

'...\n\n"}';
避开反斜杠:

'...\\n\\n"}';

在JSON内部,字符串中的引号需要用反斜杠转义:
{“key”:“prop with\“quote”}

在JavaScript中,字符串文本中的引号和反斜杠需要用反斜杠转义:
“string with\\backslax和\“quote”

如果您真的需要在JS字符串文本中使用JSON(没有理由这样做),则需要对它们进行双重转义:
JSON=“{\”key:\“prop with\\\”quote和\\n linebreak\“}”
。你还没有为“Windows Phone”的引用这样做


然而,在处理这些问题时,你一定做错了什么。通常,您从ajax调用等获取JSON字符串,您已经将它们作为字符串值获取。如果您想将一些服务器创建的JSON直接回送到js脚本中,您不需要将其包装为字符串文字-它已经是有效的对象文字语法。

您的问题可能是整个
JSON
对象只是一个字符串,因为开头和结尾都有引号。JSON的思想是将复杂变量分配给一个对象,如下所示:

var Json = {
  "resolved_id": "244296544",
  ...
}
此外,无需逃避前斜杠。

根据,您的问题在这一行:

"title": "Windows Phone 7 Connector for Mac updated for WP8, rebranded simply as \'Windows Phone\'",
如果删除“”上的反斜杠,则会验证。在这里,你逃不掉'


不幸的是,由于您正在使用“”来分隔字符串,因此需要找到另一种方法来转义它。您可以使用\u0027代替\。

如何创建json?您使用的是JSON.stringify还是jquery的$.toJSON??您如何知道它没有被正确处理?嗯,您不需要转义前斜杠
/
只需反斜杠``这是检查JSON有效性的好地方:@z如果您将字符串化的JSON放在脚本标记中,并且JSON包含一个带有
的字符串,则确实需要转义前斜杠。我以前就被它咬过。这可能是一个不正确的转义,但现在即使在这些修复之后,我也会收到一个错误,说意外的标记“W”。指第一个\'之后的第一个“W”。我需要知道一种修复这些转义的好方法,以便它能够正常工作:\n如果您尝试在jsonlint.org上运行JSON,结果会很好……这是一种不正确的转义。我只检测到语法分析器发出警报的“Windows Phone”之前的引号转义。但这并不能解决真正的问题,即\“…the\”需要以某种方式替换为\\”。我无法编写一个可靠的javascript函数,只将所需的引号替换为\\”不是所有的引号,问题是我得到的是字符串形式。所以我真的别无选择。你应该告诉你的供应商,他们提供的根本不是JSON,而是一个字符串。您将需要执行类似于
var Json=eval(“{…}”)的操作请注意,使用
eval
是非常危险的,它会打开您的代码以查找各种漏洞。我想我已经设法错误地解释了我的困境。但我设法用一些黑客的东西解决了它。所以我想这很好:\嗯,这几乎是我需要的,但这又是对我的实现的完全误解,这是我的一个错误,因为我没有提到它。我如何实现它是因为我的C#应用程序中有一个webview,它将具有这个Javascript函数。我将调用webview.invoke('function','vars');“vars”将是JSON,我将从HTTP请求加载到外部API。对不起,我不太了解C#及其JS抽象。但是,尝试在不将JSON嵌入Quotes的情况下回显JSON。外部API不是我的:\n因此我不能这样做。我非常确定此API返回的是有效的JSON字符串,而不是h