为什么Python不能解析这个JSON数据?我在文件中有这个JSON:{
"maps": [
{
"id": "blabla",
"iscategorical": "0"
},
{
"id": "blabla",
"iscategorical": "0"
}
],
"masks": [
"id": "valore"
],
"om_points": "value",
"parameters": [
"id": "valore"
]}我写了这个脚本来打印所有的JSON数据:import jsonfrom pprint import pprintwith open('data.json') as f:
data = json.load(f)pprint(data)但该程序引发了一个例外:Traceback (most recent call last):
File "<pyshell#1>", line 5, in <module>
data = json.load(f)
File "/usr/lib/python3.5/json/__init__.py", line 319, in loads
return _default_decoder.decode(s)
File "/usr/lib/python3.5/json/decoder.py", line 339, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "/usr/lib/python3.5/json/decoder.py", line 355, in raw_decode
obj, end = self.scan_once(s, idx)
json.decoder.JSONDecodeError: Expecting ',' delimiter: line 13 column 13 (char 213)如何解析JSON并提取其值?
3 回答
![?](http://img1.sycdn.imooc.com/533e50ed0001cc5b02000200-100-100.jpg)
慕尼黑的夜晚无繁华
TA贡献1864条经验 获得超6个赞
您的数据不是有效的JSON格式。你有[]
什么时候应该{}
:
[]
用于JSON数组,list
在Python 中调用{}
适用dict
于在Python 中调用的JSON对象
以下是您的JSON文件的外观:
{ "maps": [ { "id": "blabla", "iscategorical": "0" }, { "id": "blabla", "iscategorical": "0" } ], "masks": { "id": "valore" }, "om_points": "value", "parameters": { "id": "valore" }}
然后你可以使用你的代码:
import jsonfrom pprint import pprintwith open('data.json') as f: data = json.load(f)pprint(data)
使用数据,您现在还可以找到如下值:
data["maps"][0]["id"]data["masks"]["id"]data["om_points"]
尝试一下,看看它是否有意义。
![?](http://img1.sycdn.imooc.com/545864490001b5bd02200220-100-100.jpg)
慕的地6264312
TA贡献1817条经验 获得超6个赞
你data.json
应该看起来像这样:
{ "maps":[ {"id":"blabla","iscategorical":"0"}, {"id":"blabla","iscategorical":"0"} ],"masks": {"id":"valore"},"om_points":"value","parameters": {"id":"valore"}}
你的代码应该是:
import jsonfrom pprint import pprintwith open('data.json') as data_file: data = json.load(data_file)pprint(data)
请注意,这仅适用于Python 2.6及更高版本,因为它取决于with
-statement。在Python 2.5中使用from __future__ import with_statement
,在Python <= 2.4中,请参阅Justin Peel的答案,该答案基于此答案。
您现在还可以访问单个值,如下所示:
data["maps"][0]["id"] # will return 'blabla'data["masks"]["id"] # will return 'valore'data["om_points"] # will return 'value'
添加回答
举报
0/150
提交
取消