【发布时间】:2019-08-28 18:32:19
【问题描述】:
以key为输入并在整个json数据中搜索该key并返回该key的键值对列表的方法
此方法适用于普通键值对 {'key':'some value'} 但如果键的值是列表或字典 {'keya':[1,2,3]} 它返回空列表
filedata=open('testdata.json','r')
filedata=json.loads(filedata)
def extract_values(obj, key):
"""Pull all values of specified key from nested JSON."""
arr = []
def extract(obj, arr, key):
"""Recursively search for values of key in JSON tree."""
if isinstance(obj, dict):
for k, v in obj.items():
if isinstance(v, (dict, list)):
extract(v, arr, key)
elif k == key:
arr.append(v)
elif isinstance(obj, list):
for item in obj:
extract(item, arr, key)
return arr
results = extract(obj, arr, key)
return results
z=extract_values(filedata,'text')
print(z)
【问题讨论】:
-
这里,一个可重现的 JSON 示例可能有助于找出列表为空的原因。
-
欢迎来到 SO。您应该始终包含数据的最小示例,以便可以重现问题/缺陷并测试解决方案 - 您越容易为潜在的回答者提供更多解决方案。请阅读minimal reproducible example.
标签: python json rest recursion