Jquery:使用双引号解析有效Json字符串时出错

时间:2015-09-12 20:06:29

标签: jquery json

我很困惑。我在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>

2 个答案:

答案 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>