JSON可以容纳多少有限制?

您所在的位置:网站首页 nlogit数据量有限制吗 JSON可以容纳多少有限制?

JSON可以容纳多少有限制?

2024-07-11 14:01| 来源: 网络整理| 查看: 265

我将jquery,JSON和AJAX用于注释系统。 我很好奇,可以通过JSON发送/存储的内容是否有大小限制? 就像用户输入大量内容并通过JSON发送一样,是否存在某种最大限制?

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

相关讨论 实际上,我认为存在某种限制,但我无法情况是这样的:我有一个Asp.Net页面(不要判断我,我被要求使用它)查询数据库并获得一个包含约2000行和27列的数据表。如果我将数据表放到XML上,则客户端的请求会起作用,但很慢,但会起作用,因为js正在创建表并做了一些工作..无论如何...我做了一个DataTable To jSon例程,该例程一直对我有用一种魅力,但是在这种情况下,大量数据似乎被截断了,或者发生了其他事情,但是服务器响应 请注意您如何解释以下人群的答案!大多数答案都说JSON本身没有限制。虽然大多数服务器将具有可配置的限制。我运行了一个简单的AJAX测试,每次发送时我增加一个字节,大约增加8K字节,但在我现在尝试的几台PHP / Apache服务器上失败了。错误为:" 414(请求URI太大)" 我们在iOS / iPhone上可靠地发送/接收100kb负载。要注意的是,许多协议都以块的形式接收数据,并且尝试对块进行反序列化而不是等待所有数据都将被接收会导致失败,除非为此专门设置了解串器逻辑。 @Jeach-这种故障几乎可以肯定是由于数据传输被分成8K块,然后在尝试解析之前未在另一端正确地重组。 @HotLicks我不确定错误是什么或引起错误的原因,但我确实知道我的测试是在可靠的1GB / s专用链接上完成的。因此,如果它在那里失败,则对于您的通用浏览器/服务器链接肯定会失败。我测试过的产品是我们出售的商业产品,每秒可可靠地传输多个GB的音频。我将研究损坏的8K块的含义,但最终我希望它在云中使用时会失败(或更多)。 @Jeach-这是常见的编码错误。仅等待来自请求的第一个响应消息与等待最后一个并将响应数据串联在一起。每个响应最多包含8K,因此对于更长的数据,将使用多个响应。 @Jeach-如果您使用标准的NSURLConnectionh在iOS中执行此操作,则需要实现connectionDidFinishLoading并在那里(或在调用之后)进行JSON转换,而不是在didReceiveData中进行(您应在其中简单地串联接收到的数据)和之前收到的日期)。其他环境类似。 我得到了IndexSizeError: Index or size is negative or greater than the allowed amount.,但是在接收到数据后尝试输出数组时,我看到了它的发生。

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

相关讨论 所以从技术上讲,如果我想将整个源代码带到整个页面,可以将它作为json对象发送? 是的,使用正确的编码。 @jasondavis,轻松地。 该页面代码实际上只有6.7kb(不计算外部资源)。几乎可以使用任何类型的HTTP请求轻松完成该操作。 可能值得注意的是,Ambers答案中提到的属性JavaScriptSerializer.MaxJsonLength的"默认值为2097152个字符,相当于4 MB的Unicode字符串数据"。 (N.B.我已引用MSDN) 那么如何解析155kb的JSON对象呢? 服务器不会解析,我相信客户端会解析服务器序列化。传统的JavaScript解释器(例如v8,硝基和Spidermonkey)是否有限制? @AsadHasan服务器可以解析或序列化,具体取决于数据的方向。 保持限制JSON数据或没有限制,无限的JSON数据更可取? @Amber亲爱的我从共享点获取数据,但它只提供100个数据,而json array.700中有700个数据。所以我只需要写100个静态的循环,否则会给错误数组indexoutofbound 我得到了IndexSizeError: Index or size is negative or greater than the allowed amount.,但是在已经接收到数据后尝试输出数组时,我看到了它的发生。 我已经做了一段时间设置MaxJsonLength属性,最近我发现firefox不会完全显示请求的响应,尽管没有任何问题,但效果很好。

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

各种浏览器的JavaScript实现可以处理多少JSON是有限制的(例如,根据我的经验,此大小约为40MB)。例如,请参见此问题。

相关讨论 8K是JSON的一个极小的限制。我怀疑这不是JSON的限制,而是数据以8K块的形式传输,并且接收数据的代码正在尝试反序列化单个块,而不是等待整个有效负载到达。 ID打赌您是正确的热门选项。我更新了答案。

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

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

相关讨论 8K"限制"几乎可以肯定是数据传输块的边界,而不是JSON文档的限制。可以通过正确重组多段传输来处理较大的字符串。 自从我们弄清楚如何在DataContractJsonSerializer中更改8K限制以来已经有一段时间了,但是我认为这是" MaxJsonLength"设置(msdn.microsoft.com/en-us/library/)

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

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

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

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

12345678var jsonResult = Json(new {     draw = param.Draw,     recordsTotal = count,     recordsFiltered = count,     data = result }, JsonRequestBehavior.AllowGet); jsonResult.MaxJsonLength = int.MaxValue; 相关讨论 但这使最大容量大约为4MB,我们需要更高的容量。我们如何处理这种情况?

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

请参阅下面的URL

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

相关讨论 JSON本身没有固有限制。您发布的内容特定于.net及其JavaScriptSerializer类。并且MaxJsonLength已经在其他答案中得到了解决。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3