我需要一点帮助来解析一个大的JSON文件。这里我只有一个数据样本(只有2个项目)。
我需要使用parse方法。open()
无法工作,因为文件太大。
parser=ijson.parse("sample.json")
我需要循环并打印出所有Assets
中的Identifier
。
这不是很难,但是我不能得到正确的代码。
感谢您的任何有用的提示。
彼得
json数据:
{
"AssetCount": 2,
"Server": "xy",
"Assets": [
{
"Identifier": "21979c09fc4e6574"
},
{
"Identifier": "e6235cce58ec8b9c"
}
]
}
发布于 2013-11-23 01:12:24
试试ijson.parse(open('sample.json'))
。输出将如下所示
list(ijson.parse(open('sample.json')))
[('', u'start_map', None),
('', u'map_key', u'Server'),
(u'Server', u'string', u'xy'),
('', u'map_key', u'Assets'),
(u'Assets', u'start_array', None),
(u'Assets.item', u'start_map', None),
(u'Assets.item', u'map_key', u'Identifier'),
(u'Assets.item.Identifier', u'string', u'21979c09fc4e6574'),
(u'Assets.item', u'end_map', None),
(u'Assets.item', u'start_map', None),
(u'Assets.item', u'map_key', u'Identifier'),
(u'Assets.item.Identifier', u'string', u'e6235cce58ec8b9c'),
(u'Assets.item', u'end_map', None),
(u'Assets', u'end_array', None),
('', u'map_key', u'AssetCount'),
(u'AssetCount', u'number', 2),
('', u'end_map', None)]
ijson也可以从pypi获得。
发布于 2014-10-12 01:51:01
这可能已经太晚了,但无论如何,…
ijson.parse
是一个较低级别的函数,您需要使用ijson.items
,它可以为您完成所有的前缀过滤和对象构造:
import ijson
f = open('sample.json', 'rb')
for id in ijson.items(f, 'Assets.item.Identifier'):
# do something with id
注意: ijson想要二进制格式的文件,因此在open
中使用'rb‘模式。
发布于 2014-05-15 20:45:14
最好像这样试一试
import ijson
file_name="sample.json"
with open(file_name) as file:
parser = ijson.parse(file)
for prefix, event, value in parser:
if prefix=="AssetCount":
print value
if prefix=="Server":
print value
if prefix=="Assets.item.Identifier":
print value
输出如下:
2
xy
21979c09fc4e6574
e6235cce58ec8b9c
https://stackoverflow.com/questions/20149321
复制相似问题