【发布时间】:2012-02-21 13:32:55
【问题描述】:
我有一个由 JSON.net 序列化的对象,发送到 javascript 客户端,该客户端将其转换为 javascript 对象。该对象可以由用户编辑,然后 javascript 使用 JSON.stringify(myObject) 将其转换回 json 并通过 ajax 将其传递回使用 JSON.net 将 json 反序列化回原始对象的方法。
所有这些都可以正常工作,直到我在对象上有一个包含双引号的值,此时 JSON.net 反序列化失败。
以下是发送到 JSON.net 进行反序列化的 JSON 示例:
"{
\"$id\":\"1\",
\"Treatment_ID\":36050,
\"Project_Classification\":\"MCPM\",
\"Improvement_Type\":\"Cape Seal\",
\"Jurisdiction\":\"24120\",
\"Description\":\"\",
\"Planned\":true,
\"Comment\":\"test22 2\"\"
}"
所有双引号都被自动转义。如果它们没有被转义,json 看起来更像这样:
"{
"$id":"1",
"Treatment_ID":36050,
"Project_Classification":"MCPM",
"Improvement_Type":"Cape Seal",
"Jurisdiction":"24120",
"Description":"",
"Planned":true,
"Comment":"test22 2\""
}"
如何克服这种行为?
【问题讨论】:
-
您是依赖浏览器的 JSON.stringify 实现还是依赖库的实现? JSON.stringify 应该只在 "Comment" 的值中转义双引号。
-
我相信是浏览器的实现。我的 javascript 中没有任何引用,我将 JSON 定义为其他内容。上面的例子是在 FireFox 9 中。
-
@AmandaMyer - 如果您认为问题是特定于浏览器的,请尝试Douglas Crockord's stringifier。
标签: javascript ajax serialization json.net