Python-ijson嵌套解析
我正在处理一个JSON的web响应,它看起来像这样(简化了,我不能更改格式):Python-ijson嵌套解析,python,json,parsing,ijson,Python,Json,Parsing,Ijson,我正在处理一个JSON的web响应,它看起来像这样(简化了,我不能更改格式): [ {“类型”:“0”,“键1”:3,“键2”:5}, {“类型”:“1”,“键3”:“a”,“键4”:“b”}, {“类型”:“2”,“数据”:[]} ] 我想做两件事: 检查前两个对象而不将所有内容读取到内存中,我可以使用Ijson执行此操作: 检查第三个对象,但不将其全部存入内存。 如果我再次执行next(parsed),所有的“数据”数组都将被读取到内存中并转换为dict,我希望避免它 检查数据阵列,而不
[
{“类型”:“0”,“键1”:3,“键2”:5},
{“类型”:“1”,“键3”:“a”,“键4”:“b”},
{“类型”:“2”,“数据”:[]}
]
我想做两件事:
next(parsed)
,所有的“数据”数组都将被读取到内存中并转换为dict,我希望避免它
ijson.parse
在解析逻辑中降低一个级别,直到找到大数组,然后切换到使用ijson.items
和其余的parse
事件。这使用了字符串文字,但应说明以下要点:
导入ijson
s=b''[
{“类型”:“0”,“键1”:3,“键2”:5},
{“类型”:“1”,“键3”:“a”,“键4”:“b”},
{“类型”:“2”,“数据”:[1,2,3]}
]'''
parse_events=ijson.parse
尽管如此:
路径、名称、值=下一步(解析_事件)
#对路径、名称、数据进行处理,直到。。。
如果名称='map_key'和值='data':
打破
对于ijson.items(解析_事件'item.data.item')中的值:
打印(值)
能够重复使用items
调用中的parse_events
对象是我所缺少的一部分。
parsed = ijson.items(res.raw, 'item')
next(parsed) # first item
next(parsed) # second item
parsed = ijson.items(res.raw, 'item.data.item') # iterator over data's items