繁体   English   中英

从文件加载漂亮的打印JSON到python吗?

[英]Load pretty printed JSON from file into python?

我有一个以精美打印格式存储的大型JSON文档,该文件如下所示:

$ nano data.json

{
"type" : "object",
"properties" : {
  "price" : {"type" : "number"},
  "name" : {"type" : "string"},
  },
}

我发现用于读取此类json文件的传统方式,例如...

with open('data.json', 'r') as handle:
    data = json.load(handle)

和...

json_data=open('data.json','r')
data = json.load(json_data)
json_data.close()

和...

data = []
with open('data.json') as f:
    for line in f:
        data.append(json.loads(line))

和...

ss = ''
with open('data.json', 'r') as f:
    for line in f:
        ss += ''.join(line.strip())

data = json.loads(ss.decode("utf-8","replace"))

...似乎仅适用于单字符串而不是漂亮打印格式的JSON。

如何从文件加载这种格式的JSON? 尝试这些格式时,我不断遇到的错误是...

Traceback (most recent call last):
  File "<stdin>", line 7, in <module>
  File "/usr/lib/python2.7/json/__init__.py", line 326, in loads
    return _default_decoder.decode(s)
  File "/usr/lib/python2.7/json/decoder.py", line 366, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "/usr/lib/python2.7/json/decoder.py", line 382, in raw_decode
    obj, end = self.scan_once(s, idx)
ValueError: Expecting , delimiter: line 1 column 250 (char 250)

ValueError: Expecting , delimiter: line 9 column 13 (char 310)

对于将来在其他人身上发现此问题的人,与我在发布此内容时所做的类似,您可能会认为您的错误是在加载中,但如上所述的我实际上是在JSON本身中,而不是在加载中(如Martijn彼得指出)。 我正在从jsonschema python项目中复制模式,但是事实证明,它不是JSON,而是看似相似的python字典。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM