我很困惑。我在SO上阅读了很多帖子,但奇怪的是我无法找到适合我情况的解决方案。
我有以下非常简单的VALID json字符串。请注意,它在属性值中包含双引号。
{"text":"\"xxxxx"}
您可以在jsonlint
验证它是否是有效的Json字符串现在我希望通过以下方式将上面的字符串与jQuery.parseJSON解析为对象:
jQuery.parseJSON('{"text":"\"xxxxx"}');
我收到错误。有人能让我知道我想念的是什么吗?
非常感谢!!!
背景
我正在做一个Web应用程序。在后端(Java + Spring)中,我使用Google的Gson将复杂对象解析为Json字符串。然后将此字符串作为字符串传递给fontend(Javascript)。现在我需要将字符串转换回Json对象。我无法改变这种技术方法。
更新1 以下是页面加载时作为页面一部分生成的实际代码(我可以在Firefox的View Source中看到它)
<script>
var data='{"defaultLocale":"en","answers":[{"text":"\"xxxx"}.......
</script>
答案 0 :(得分:1)
JSON有效,但在解析时,转义值会丢失。这是有效的解析JSON:
jQuery.parseJSON('{"text":"\\\"xxxxx"}');
答案 1 :(得分:1)
问题在于JSON编码对象,以字符串形式注入脚本然后进行JSON解码。
<script>
var data='{"defaultLocale":"en","answers":[{"text":"\"xxxx"} ... }';
</script>
因此,只要JSON编码的对象字符串具有有效的javascript语法(显然是预期的),就可以直接注入,不带字符串 - &gt; JSON解码步骤:
<script>
var data = {"defaultLocale":"en","answers":[{"text":"\"xxxx"} ... };
</script>