2 回答
TA贡献1816条经验 获得超6个赞
您的代码显示追加,但您要求计数。如果我对您的理解正确,这是一种递归方式来获取此 JSON 中的子项数量:
def get_children(body, c=1):
if not body.get('children'):
c += 1
elif isinstance(body.get('children'), list):
c += 1
for subchild in body.get('children'):
c += 1
get_children(subchild, c)
return c
counts = get_children(your_json_blob)
print(counts)
>>> 7
编辑:我故意没有使用,if/else因为我不知道你是否可以有子孩子,dict而不是list这意味着你需要额外的条件,但如果最终是这种情况,这取决于你。
TA贡献1876条经验 获得超5个赞
我找到了解决我的问题的方法,
以下代码将获取所有子项并将它们附加到列表中
class Children():
def Get_All_Children(self,json_input, lookup_key):
if isinstance(json_input, dict):
for k, v in json_input.items():
if k == lookup_key:
yield v
else:
yield from self.Get_All_Children(v, lookup_key)
elif isinstance(json_input, list):
for item in json_input:
yield from self.Get_All_Children(item, lookup_key)
for locations in self.Get_All_Children(self.json_data, 'locationId'):
self.mylist.append(locations)
添加回答
举报