JSON.netによってシリアル化されているオブジェクトがあり、javascriptクライアントに送信され、javascriptオブジェクトに変換されます。オブジェクトはユーザによって編集され、javacriptはJSON.stringify(myObject)
を使ってjsonに変換し、それをajax経由でJSON.netを使用して元のオブジェクトに逆シリアル化するメソッドに戻します。JSON.net jsonで二重引用符でデシリアライズが失敗する
二重引用符を含むオブジェクトに値が設定されるまで、これはすべてうまく動作します。その時点で、JSON.netの逆シリアル化は失敗します。
"{
\"$id\":\"1\",
\"Treatment_ID\":36050,
\"Project_Classification\":\"MCPM\",
\"Improvement_Type\":\"Cape Seal\",
\"Jurisdiction\":\"24120\",
\"Description\":\"\",
\"Planned\":true,
\"Comment\":\"test22 2\"\"
}"
全二重引用符を自動的にエスケープされています:ここで
は、逆シリアル化のためにJSON.netまで送られているJSONの例です。彼らはエスケープされていなかった場合は、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"の値内で二重引用符をエスケープする必要があります。 –
私はそれがブラウザの実装だと信じています。 JSONを何か他のものとして定義しているjavascriptには参照がありません。上記の例はFireFox 9にあります。 –
@AmandaMyer - 問題がブラウザ固有のものだと思うなら、[Douglas Crockordのstringifier](http://www.json.org/js.html)を試してみてください。 – kuujinbo