【问题标题】:What is the maximum length that $.parseJSON() can handle?$.parseJSON() 可以处理的最大长度是多少?
【发布时间】:2013-11-25 18:14:08
【问题描述】:

我有一个长 json 数组,需要发送到 html5 移动应用程序并进行解析。整个数组大约有 700kb(压缩到 150kb),目前有 554976 个字符。但它会随着时间的推移而增加。

使用 jquery 解析 json,我的应用程序在尝试解析它时崩溃。 jsonlint、json parser.fr 和我尝试的任何其他在线 json 验证器也是如此,所以我猜eval() 也不是一个选项。

可能是一个广泛的问题,但 json 数组的最大“可接受”长度是多少?

我已经从数组中删除了尽可能多的数据,我能想到的唯一选择是将数组拆分为 3-4 个服务器调用并在应用程序中单独解析它。还有其他选择吗?

编辑

感谢@fabien 指出如果 jsonlint 崩溃,则 json 存在问题。其中一个节点中有一个隐藏的“空格”字符。它在服务器上被正确解析,但在客户端上却没有。

【问题讨论】:

  • 您的意思是“崩溃”还是更像“冻结”?
  • 关于堆栈溢出的related 查询。接受的答案还包含开发人员解析大型 JSON 字符串所遵循的分析和方法。希望这可以为您指明解决方案
  • eval 无疑会比$.parseJSON 更快,内存效率更高。也看看JSON.parse(不完全跨浏览器)
  • stackoverflow.com/questions/9912642/… 有一个 20mb 的 JSON 字符串正在被解析。您确定您的 JSON 对象格式正确吗?
  • @Petah 来自 jQuery 2 源 parseJSON: JSON.parse,。 jQuery 1.x 将它用于所有支持它的浏览器。

标签: javascript jquery arrays json


【解决方案1】:

我已经用 jquery 解析了更大的数组。

我的第一个猜测是你的 json 中有错误。

你有很多方法可以找到它(崇高的文字可能会突出显示错误,但有时会有点长)。尝试将其粘贴到http://www.jsoneditoronline.org/ 之类的网络工具中。并使用任何按钮(格式化或发送到右视图)。它会告诉你错误在哪里。

【讨论】:

  • 这是一个很好的工具,它实际上正确地解析了json!如果我直接在 jsonlint 上尝试它会冻结。这对我来说似乎有点奇怪。
  • 你能给我们看看 json 吗?如果皮棉冻结,那就有问题了:)
  • 不幸的是我不能。保密协议。爱他们!但我发现了问题。其中一个节点中有一个奇怪的“空白”字符。出于某种原因,它在 c# 上被正确解析,但在 javascript 上却没有。当我使用不同的解析器时,.net 标记了它!顺便说一句,很棒的在线工具!感谢分享!
  • 这是因为 jquery 解析它的方式;它不会转义特殊字符、空格、换行符...如果您是基于网络的,您可以通过首先使用 php / ruby​​ 解析数据来代理数据(它将纠正大部分错误)然后发送它到您的应用。
猜你喜欢
  • 1970-01-01
  • 2019-09-03
  • 2016-01-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-30
  • 1970-01-01
  • 2016-04-03
相关资源
最近更新 更多