获取包含内部元素的JSON根元素

时间:2018-11-27 12:42:00

标签: python arrays json data-structures

编辑:它不应该输出“ 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”元素,因为它没有内部元素。

2 个答案:

答案 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']