.ToJson()
私は次のような拡張メソッドを書きました:
public static string ToJson(this object obj)
{
JavaScriptSerializer serializer = new JavaScriptSerializer();
return serializer.Serialize(obj);
}
これにより、JSON 文字列を取得して、 Web サービスmyObject.ToJson()
経由でアプリケーションに送り返すことができます。.asmx
これはすべてうまくいきます。
大量の非同期データをページに転送する必要があるページを作成しているときに問題が発生し、100k を超えるデータ ペイロードに達し始めています。JSON を見ると、送り返すものはすべてエンコードされていることに気付きました。これにより、多くの余分な文字が追加されます。このアプリケーションは非常に少数の対象者向けの管理ツールであるため、この種のセキュリティについてはあまり心配していませんが、エンコーディングを制御する方法がここで見つからないようです。
これが私が受け取っているものです(例):
{"d":"[{\"OrderId\":1308,\"Approved\":true,
\"Status\":\"\\u003cimg class=\\\"statusicon\\\" src=\\\"/images/ ...
次のようなものを取得する必要がある場合:
{"d": [{"OrderId":1308,"Approved":true,"Status":"<img class=\"statusicon\"
src=\"/images/ ...
JSON データがエスケープされるかどうかを制御する方法はありますか?
.ajaxSetup()
注意すべきことの1つは、戻ってくるこのデータを解析するためにこれを使用することを余儀なくされていることです:
dataFilter: function (data) {
if (data) {
var msg;
if (typeof (JSON) !== 'undefined' && typeof (JSON.parse) === 'function') {
msg = JSON.parse(data);
} else {
msg = eval('(' + data + ')');
}
if (msg.hasOwnProperty('d')) {
return msg.d;
} else {
return msg;
}
}
}