首页 文章

.NET JSON.decode()对于大型数组失败

提问于
浏览
1

MVC 4 ASP.NET Web API应用程序:

我有一个形式的JSON数组:

var json = "{
    'mapset':
    [
        {
            'id': '1',
            'key': 'key1',
            'value': 'value1',
            'timestamp': '2014-02-12T08:50:54.594Z'
        },
        {
            'id': '2',
            'key': 'key2',
            'value': 'value2',
            'timestamp': '2014-02-12T08:50:54.594Z'
        },
    ]
}";

dynamic data = System.Web.Helpers.JSON.decode(json);

对于每个大约1K字节的10K元素的数组, JSON.Decode() 就像一个魅力 .

对于100K元素失败并出现错误:

System.ArgumentException:使用JSON JavaScriptSerializer进行序列化或反序列化时出错 . 字符串的长度超过maxJsonLength属性上设置的值 . 参数名称:在System.Web.Helpers处的System.Web.Script.Serialization.JavaScriptSerializer.Deserialize(JavaScriptSerializer序列化程序,字符串输入,类型类型,Int32 depthLimit)处输入 . Json.Decode(字符串值)

如何设置更高的限制?

我知道关于这个主题的另一篇文章:

Can I set an unlimited length for maxJsonLength in web.config?

但是那里提供的答案并没有解决我的具体问题 .

我在MVC4应用程序中直接使用 JSON.Decode() ,因此 web.config 设置的修改将不适用 . 并且 JSON.Decode() 将JSON字符串反序列化为.NET JSON对象(而不是将.NET JSON对象序列化为JSON字符串) .

1 回答

  • 0

    System.Web.Script.Serialization.JavaScriptSerializer 为我做了诀窍 .

    我认为这很难看,但是使用JavaScriptSerializer,我可以将maxJsonLength设置为一个很大的值:

    JavaScriptSerializer ser = new JavaScriptSerializer();
    ser.MaxJsonLength = Int32.MaxValue; // <-- should probably not use that huge value
    var jsonArtikel = ser.Serialize(Model);
    

相关问题