我写了一个.ToJson()
扩展方法,如下所示:
public static string ToJson(this object obj)
{
JavaScriptSerializer serializer = new JavaScriptSerializer();
return serializer.Serialize(obj);
}
这允许我执行类似myObject.ToJson()
的操作,以通过我的.asmx
Web服务将JSON字符串发送回我的应用程序。这一切都很有效。
出现了一个问题,即我正在构建一个需要将大量异步数据传输到页面的页面,并且我开始达到超过100k的数据有效负载。在查看JSON时,我注意到它编码了我发回的任何内容,这增加了许多额外的字符。由于此应用程序是针对非常小的受众的管理工具,我并不是真的担心这种安全性,但我似乎无法在here中找到如何控制编码。
以下是我收到的内容(示例):
{"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;
}
}
}
答案 0 :(得分:0)
我有这个问题。 json库不返回转义文本。我相信javascript本身就是将其解释为转义。
<script type="text/javascript">
$(document).ready(function () {
var columnNumber = 1;
var databaseTypes = <%= Html.Raw(ViewBag.DatabaseTypes) %>;
看看Viewbag区域。这是在asp.net mvc视图中注入文本的方法。