编辑:它不应该输出“ notThis”,因为它没有内部元素。
编辑:这篇文章不是重复的,因为它要求解析内部元素,并且只要求没有内部元素的解析元素。
我想将JSON数组的根元素放在单独的数组中。因此,我还想解析其内部元素的名称,并将它们放入包含内部元素数组的数组中。
请参见以下示例:
[
{
"firstRoot": {
"firstInner1": "test",
"secondInner1": "test"
}
},
{
"secondRoot": {
"firstInner2": "test",
"secondInner2": "test"
}
},
{
"thirdRoot": {
"firstInner3": "test",
"secondInner3": "test"
}
}, {"notThis" : "test"}
]
所需的输出: 具有所有根元素名称的数组:
["firstRoot", "secondRoot", "thirdRoot"]
一些带有内部元素的数组:
[["firstInner1","secondInner1"],["firstInner2","secondInner2"],["firstInner3","secondInner3"]]
因此没有“ notThis”元素,因为它没有内部元素。
答案 0 :(得分:1)
像这样?可能不是最佳解决方案。
#Load JSON
json_str = '[{"firstRoot":{"firstInner1":"test","secondInner1":"test"}},{"secondRoot":{"firstInner2":"test","secondInner2":"test"}},{"thirdRoot":{"firstInner3":"test","secondInner3":"test"}}]'
dic = json.loads(json_str)
#Output arrays
root_ele = []
inner_ele = []
#Parse JSON
for i in dic:
root_ele.append(list(i.keys())[0])
y = [k for j in list(i.values()) for k, l in j.items()]
inner_ele.append(y)
#Print output
print(root_ele)
print(inner_ele)
输出:
['firstRoot', 'secondRoot', 'thirdRoot']
[['firstInner1', 'secondInner1'], ['firstInner2', 'secondInner2'], ['firstInner3', 'secondInner3']]
答案 1 :(得分:1)
我将lambda映射到json条目上:
json_dict = {...}
list(map(lambda j: list(j.keys())[0], json_dict))
# ['firstRoot', 'secondRoot', 'thirdRoot']