Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 递归嵌套json对象_Python_Python 3.x - Fatal编程技术网

Python 递归嵌套json对象

Python 递归嵌套json对象,python,python-3.x,Python,Python 3.x,我想在python中递归以下嵌套的json字符串 { "hierarchy": { "record": { "id": 1, "record": [ { "id": 2, "record": [ { "id": 3, "record": [ { "id": 4

我想在python中递归以下嵌套的json字符串

{
  "hierarchy": {
    "record": {
      "id": 1,
      "record": [
        {
          "id": 2,
          "record": [
            {
              "id": 3,
              "record": [
                {
                  "id": 4,
                  "record": []
                },
                {
                  "id": 5,
                  "record": []
                }
              ]
            }
          ]
        },
        {
          "id": 6,
          "record": [
            {
              "id": 7
            }
          ]
        }
      ]
    }
  },
  "type": "record"
}
并得到如下结果

record_field    id  parent_id
=============================
record          1   null
record          2   1
record          3   2

record          4   3
record          5   3

record          6   1
record          7   6

我正在使用递归函数,但尚未成功获得预期结果。任何解决方案的帮助都将是巨大的。

感谢它提供的帮助链接。我在《屈服于》中错过了


请,也包括您的尝试。检查
def iter_cls(parentId, obj):
    if (len(obj)>0):
        for obj_item in obj:
            yield (parentId, obj_item.get("id"), obj_item.get("classifKey"))
            yield from iter_cls(obj_item.get("id"), obj_item.get("record"))

data = json.loads(str)
cls_data = data["hierarchy"]
top_cls = cls_data["record"]
top_cls_id = top_cls["id"]

l = ("{0}|{1}|{2}".format(ParendID,id,name)
        for (pid, id, name, clevel) in iter_cls(top_cls_id,top_cls["record"])
     )