通过递归,你可以做这样的事情:
result = []
def finditem(obj, key):
if key in obj: result.append({"timestamp": obj[key], "text": obj['textsList'][0]['text']})
for k, v in obj.items():
if isinstance(v,dict):
item = finditem(v, key)
if item is not None:
result.append({"timestamp": item,"text":v['textsList'][0]['text']})
elif isinstance(v,list):
for i in v:
item = finditem(i, key)
if item is not None:
result.append({"timestamp": item,"text": i['textsList'][0]['text']})
finditem(data, 'timestamp')
print (result)
result:
[{'timestamp': 1234567890, 'text': 'some text here 0'}, {'timestamp': 12345678901234, 'text': 'some other text 1'}, {'timestamp': 12345678901234, 'text': 'some other text 2'}]
EDIT:
result = []
def finditem(obj, key):
if key in obj and obj[key]=='Recursive': result.append({"timestamp": obj["data"]["timestamp"],"text": obj["data"]['textsList'][0]['text']})
for k, v in obj.items():
if isinstance(v,dict):
item = finditem(v, key)
if item == 'Recursive':
d = v['timestamp']
result.append({"timestamp": d,"text": v['textsList'][0]['text']})
elif isinstance(v,list):
for list_item in v:
item = finditem(list_item, key)
if item == 'Recursive':
d = list_item['timestamp']
result.append({"timestamp": d,"text": list_item['textsList'][0]['text']})
finditem(data,'type')
print (result)
result:
[{'timestamp': 12345678901234, 'text': 'some other text 1'}, {'timestamp': 12345678901234, 'text': 'some other text 2'}]