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

本文关键字:数据 方法 转义 任何发 JavaScriptSerializer | 更新日期: 2023-09-27 18:36:01

我写了一个.ToJson()扩展方法,如下所示:

public static string ToJson(this object obj)
{
    JavaScriptSerializer serializer = new JavaScriptSerializer();
    return serializer.Serialize(obj);
}

这允许我执行类似myObject.ToJson()的操作,以获取通过.asmx Web 服务发送回我的应用程序的 JSON 字符串。这一切都很好用。

出现了一个问题,我正在构建一个页面,该页面

需要将大量异步数据传输到该页面,并且我开始达到超过 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;
        }
    }
}

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

我遇到了这个问题。json 库未返回转义文本。我相信javascript本身正在将其解释为转义。

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

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