JSON可容纳的数量是否有限制?

Jas*_*vis 152 json

我正在使用jquery,JSON和AJAX作为评论系统.我很好奇,你可以通过JSON发送/存储的内容有大小限制吗?就像用户输入大量数据而我通过JSON发送它是否存在某种最大限制?

也可以通过JSON发送任何类型的文本.例如,有时我允许用户使用html,这可以吗?

Amb*_*ber 131

JSON类似于XML等其他数据格式 - 如果您需要传输更多数据,则只需发送更多数据.JSON请求没有固有的大小限制.解析请求的服务器将设置任何限制.(例如,ASP.NET具有序列化程序的"MaxJsonLength"属性.)

  • 值得注意的是,对于Amber的答案中提到的属性"JavaScriptSerializer.MaxJsonLength","默认值为2097152个字符,相当于4 MB的Unicode字符串数据".(注意,我引自[MSDN](http://msdn.microsoft.com/en-us/library/system.web.script.serialization.javascriptserializer.maxjsonlength.aspx)) (15认同)
  • 是的,使用正确的编码. (2认同)
  • @AsadHasan服务器可以解析或序列化,具体取决于数据的方向. (2认同)

cdi*_*ins 15

JSON数据块的大小或任何字段没有固定限制.

各种浏览器的JavaScript实现可以处理的JSON数量有限(例如,根据我的经验,大约40MB).例如,请参阅此问题.

  • 8K是JSON的极小限制.我怀疑这不是JSON的限制,而是数据以8K块传输,接收数据的代码试图反序列化单个块而不是等待整个有效载荷到达. (4认同)

Ant*_*y F 7

这取决于您的JSON编写器/解析器的实现.微软的DataContractJsonSerializer似乎有一个大约8kb的硬限制(我认为是8192),并且对于更大的字符串它会出错.

编辑:我们能够通过在Web配置中设置MaxJsonLength属性来解决JSON字符串的8K限制,如下面的答案所述:https://stackoverflow.com/a/1151993/61569

  • 8K"限制"几乎肯定是数据传输块边界,而不是JSON文档的限制.通过正确地重新组装多块传输可以处理更大的串. (4认同)

小智 7

实现可以自由地对 JSON 文档设置限制,包括大小,因此请明智地选择您的解析器。见RFC 7159,第 9 节。解析器:

“一个实现可以对它接受的文本大小设置限制。一个实现可以对嵌套的最大深度设置限制。一个实现可以对数字的范围和精度设置限制。一个实现可以对长度和字符设置限制字符串的内容。”


小智 6

要发送或接收的 JSON 数据的大小实际上没有限制。我们也可以在文件中发送 Json 数据。根据您使用的浏览器的功能,可以处理 Json 数据。


小智 5

如果您使用 ASP.NET MVC,则可以通过将MaxJsonLength添加到结果中来解决该问题:

var jsonResult = Json(new
{
    draw = param.Draw,
    recordsTotal = count,
    recordsFiltered = count,
    data = result
}, JsonRequestBehavior.AllowGet);
jsonResult.MaxJsonLength = int.MaxValue;
Run Code Online (Sandbox Code Playgroud)


小智 5

当然,每个人都在这里错过了一个技巧。json 文件的当前文件大小限制为 18,446,744,073,709,551,616 个字符,或者如果您更喜欢字节,或者如果您至少查看 64 位基础架构,则甚至是 2^64 字节。

出于所有意图和目的,我们可以假设它是无限的,因为您可能很难解决这个问题......