JavaScriptSerializer:任何发送非转义数据的方法?

时间:2012-06-02 01:38:06

标签: c# json serialization asmx javascriptserializer

我写了一个.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;
        }
    }
}

1 个答案:

答案 0 :(得分:0)

我有这个问题。 json库不返回转义文本。我相信javascript本身就是将其解释为转义。

<script type="text/javascript">
     $(document).ready(function () {
          var columnNumber = 1;
          var databaseTypes = <%= Html.Raw(ViewBag.DatabaseTypes) %>;

看看Viewbag区域。这是在asp.net mvc视图中注入文本的方法。