【发布时间】:2018-07-04 20:45:55
【问题描述】:
我有以下类型的 JSON。在另一个表中,我有 JSONPaths,它告诉我获取某些值。如果我要获取子元素的值,我需要获取所有对应的父属性值,并将所有这些值作为一行存储在数据框中。
{
"Parent": {
"Name": "Bob",
"Age": "80",
"Children": [
{
"Name": "Michael",
"Gender":"M",
"Children": [
{
"Name": "Ezee",
"Gender": "M",
"Age": 20
},
{
"Name": "Ezee",
"Gender": "M",
"Age": 28,
"Children": [
{
"Name": "Dre",
"Age": 1
},
{
"Name": "George",
"Age": 2
}
]
}
],
"Age": 50,
"MiddleName": "Jay"
},
{
"Name": "Justin",
"Gender": "M",
"Children": [
{
"Name": "Emily",
"Age": 18,
"Gender": "F"
}
],
"Age": 45
}
]
}
}
假设我需要获取JSON路径的值:Parent/Children/0/Children/0/Name,我需要获取对应父母的姓名、年龄等属性值(Parent/Children/0/[姓名或年龄等) .]) 并将上述所有值存储为一行。
目前,我可以通过传递相关路径分别获取父值,并通过传递该路径分别获取子值。
def findValue(path, json_data):
paths = path.split("/")
data = json_data
for i in range(0,len(paths)):
if isinstance(data, list):
paths[i]=int(paths[i])
data = data[paths[i]]
else:
data = data.get(paths[i])
return data
我怎样才能做到这一点?
【问题讨论】: