【问题标题】:Is the JSON too large to parse? [closed]JSON 是否太大而无法解析? [关闭]
【发布时间】:2013-05-26 04:54:23
【问题描述】:

我从我的数据库中获取了一个学校列表及其对应的列,该数据库有 1000 多行,然后将其转换为 JSON 并将其传递给我的视图并使用

解析它
$.parseJSON('@Html.Raw(Model.subChoiceJsonString)')

然后把它放到一个数组中

ko.observableArray($.parseJSON('@Html.Raw(Model.subChoiceJsonString)'));

但我的问题是它不起作用,但是当行数少得多时它起作用。

我认为由于 Javascript 中字符串的限制而无法解析它。那是对的吗?我怎样才能让它发挥作用?

【问题讨论】:

  • '它不起作用'?什么是,什么不完全有效?有任何错误信息吗?
  • “不起作用”是什么意思?您收到错误消息吗?页面加载速度是否太慢?您是否在浏览器中收到长时间运行的脚本消息?
  • 查看生成的源码。
  • 您是否在控制台中遇到任何错误?
  • 它也可能是某个记录,可能包含一些违规字符。您的服务器应发送适当的字符编码

标签: javascript json model-view-controller knockout.js


【解决方案1】:

是的,这看起来会很大...相反,我会添加分页或类似于您的控件的东西。我不知道为什么用户希望一次看到 1000 多个项目。相反,一次只显示 50-100 个,并允许用户对完整列表进行分页。

【讨论】:

  • JSON.parse 解析应该没有问题。
  • 我用 JSON 格式导出了 80,000 行 DB 表(总占用空间 15mb);解析大约需要半秒,但之后就可以正常工作了。
【解决方案2】:

parseJSON() 接受一个字符串。
您传递给它的是一个错误转义的字符串文字,如果 JSON 有单引号,它将中断。

相反,您应该使用常规的 Javascript 文字:

var myObject = @Html.Raw(Model.subChoiceJsonString);

请注意,如果 JSON 包含 U+2028 LINE SEPARATOR,这将中断;见here

【讨论】:

    【解决方案3】:

    HTTP 本身没有大小限制,但您的服务器框架可能会施加一些限制。或者可能是您的 HTTP 请求超时的较大响应。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-28
      • 2015-08-19
      相关资源
      最近更新 更多