我有一个由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形式在有问题的引号前面只有一个反斜杠,与JSON结构本身使用的引号一样多。我的猜测是它应该有三个:两个是为了在结果字符串中形成一个"真正的"反斜杠字符,另一个是为了使引号不结束字符串。(请注意,您当前拥有的东西作为字符串或对象都没有意义,SO的代码高亮显示了这一事实)
从你的问题中,我不太清楚"所有双引号都自动转义"发生在哪里。JSON.stringify
中没有任何浏览器能做到这一点。我希望JSON.net也不要把事情搞砸。因此,无论是执行ajax请求的客户端,还是将其传递给JSON.net的服务器上的中间层都在崩溃。您需要发布更多关于问题所在的详细信息。