对于 JSON 的容量有限制吗?

我使用 jquery、 JSON 和 AJAX 作为注释系统。我很好奇,对于使用 JSON 通过/存储发送的内容是否有大小限制?比如,如果一个用户输入了大量数据,我通过 JSON 发送它,是否存在某种最大限制?

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

336798 次浏览

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

它取决于 JSON 编写器/解析器的实现。微软的 DataContractJsonSerializer 似乎有一个大约8kb (我认为是8192)的硬限制,如果字符串较大,它就会出错。

编辑: 我们可以通过在 web 配置中设置 MaxJsonLlength 属性来解决 JSON 字符串的8k 限制,如下所示: < a href = “ https://stackoverflow. com/a/1151993/61569”> https://stackoverflow.com/a/1151993/61569

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

不同浏览器的 JavaScript 实现能够处理的 JSON 数量是有限的(例如,根据我的经验,大约是40MB)。参见 比如这个问题

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

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

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

如果你使用 ASP.NET MVC,你可以通过在结果中添加 MaxJsonLlength来解决这个问题:

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

JSON 字符串的最大长度。默认值为2097152个字符,相当于4MB 的 Unicode 字符串数据。

请参考下面的网址

Https://learn.microsoft.com/en-us/dotnet/api/system.web.script.serialization.javascriptserializer.maxjsonlength?view=netframework-4.7.2

显然大家都漏掉了一个小窍门。Json 文件的当前文件大小限制是18,446,744,073,709,551,616个字符,或者如果您更喜欢字节,或者如果您至少要查看64位基础结构,甚至是2 ^ 64字节。

总的来说,我们可以假设它是无限的,因为你可能会有一个困难的时间打这个问题..。

需求是什么? 你是否试图发送一个大的 SQL 表作为 JSON 对象? 我认为 这是不现实的

你会消耗一个 大量的服务器资源,如果你推通过这一点。 你也不能用一个进度条来衡量进度,因为你的应用程序只是等待服务器的回复,这将花费很长时间。

我建议将请求分批处理,比如先处理1000个请求,然后再处理下一个1000个请求,直到您得到所需要的内容。 这样,您还可以设置一个很好的进度条来了解进度,因为提取这么多数据可能会花费太长的时间。