我写了一个.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()
来解析返回的数据:
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;
}
}
}