我有一个正在被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\""
}"我如何克服这种行为?
发布于 2012-02-21 21:41:32
不受欢迎的JSON形式在有问题的引号前面只有一个反斜杠,与用于JSON结构本身的引号一样多。我的猜测是它应该有三个:两个用来在结果字符串中生成一个“真正的”反斜杠字符,另一个用来使引号不会结束字符串。(请注意,您当前拥有的东西既不是字符串,也不是对象,这是由SO的代码突出显示带来的事实)
从你的问题看,我不太清楚“所有的双引号都会自动转义”发生在哪里。在JSON.stringify中没有浏览器可以做到这一点。我也希望JSON.net不会把事情搞砸。因此,要么是执行ajax请求的客户端,要么是将请求传递给JSON.net的服务器上的中间程序出了问题。你需要发布更多关于那里有什么的细节,以便找出问题所在。
https://stackoverflow.com/questions/9378501
复制相似问题