0

我正在尝试读取通过json.dumppython 中的模块生成的 json 文件,并使用JSON.parse. 但是,对于某些 json 转储,javascript 会为无效文字抛出异常。有谁知道为什么会发生这种情况,或者我应该怎么做才能防止这种情况发生?

浏览器:Chrome/Firefox;蟒蛇版本:2.7

EDIT1:基于提供一些代码的评论

1)json转储使用

import json
json.dump(<python-dict>, open(<filename>,'w'), encoding='utf-8')``

2)代码读取使用

  • d3.json 输出:在调用回调之前抛出语法错误。
  • JSON.parse 输出:无效的 json

EDIT2:它可能是相关的,json 转储非常大,大约 24M 未压缩。

4

2 回答 2

1

只是为了完成这个圈子,我发现了问题和相应的修复。

首先是问题:

问题并不not closing the file像某些答案所建议的那样或尺寸太大(正如我最初所想的那样)。问题是我在该json.dump部分之前的数据包含 NAN,并且默认情况下json.dump(参见json 文档)要么允许 nan 被“序列化”,要么引发错误(当 'allow_nan=False' 时)。但是,根据 ECMA-262,不允许使用 NAN,因此读取的 jquery json 无法读取转储。

解决方案:

使用simplejson和使用ignore_nan它。更正后的代码片段应该是

import simplejson
simplejson.dump(<python-dict>, open(<filename>,'w'), encoding='utf-8', ignore_nan=True)

学分:在 json 中发送 NaN

于 2013-10-02T19:48:51.847 回答
0

您没有关闭文件,当您再次尝试读取该文件时,这可能会导致文件不完整。

怎么样

with open(filename, "w") as outfile:
    json.dump(myobject, outfile)
于 2013-07-13T20:01:35.137 回答