【发布时间】:2008-11-18 17:24:38
【问题描述】:
我去了http://www.json.org/js.html 并下载了 json2.js,我想我会没事的,毕竟该网站在谷歌搜索“json javascript”中名列前茅 - 他们也有这个非常酷的 url :)
所以我一直在使用它,它看起来很好,但现在我开始遇到麻烦 - 它根本不会解析我使用 Newtonsoft 的 JSON .NET 序列化程序编码的某些内容。好吧,也许.net seralizer 搞砸了?不是我看到的那样 - 它会生成一个看起来像完美 json 的精细 javascript 字符串。
当它必须对单引号 ' 或者双引号 " 进行编码时,问题就来了。 看看这些例子(只是完整字符串的一部分)
{"Id":10651,"Text":"\'69"}
{"Id":184,"Text":"13\""}
我错过了什么吗?它是一个更大字符串的一部分,并且都放在一个像这样的 javascript 变量中
var jsonObject = '[{"Id":46,"Type":2,.....................
我认为它必须转义字符串中的单引号以避免与我在单引号中的字符串换行冲突,并转义双引号以避免与 json 格式冲突?
所以要么我做错了,要么 json2.js 做错了?或者是的,也许 .net json 搞砸了——我有点想我搞砸了,但我一直在尝试做各种事情来帮助解析,比如在序列化/转义之前进行转义/取消转义等。反序列化。
【问题讨论】:
-
当你 eval('(' + jsonObject + ')') 时会发生什么?这将有助于确定问题所在。
-
我删除了 ' 的转义,因为我现在将 json 作为对象而不是字符串输出 - 然后像您发布的那样进行评估并得到:Microsoft JScript 编译错误:预期的 ']' - 所以我的 .net序列化程序搞砸了?
-
@JoelAnaair 你应该不使用 eval 来解析 JSON!
-
@Alex 我同意你不应该在生产代码中使用 eval 来解析 JSON。但是,它对于查找 JSON 块中的语法问题很有用。感谢您指出这一点。
标签: javascript json