在python中展平JSON文件

时间:2019-02-13 06:34:18

标签: python json

我想展平JSON,以便即使是嵌套JSON也可以获取列的值。

这是JSON文件:

"columns": {
    "id": {
      "$type": "pyint"
    },
    "name": {
      "firstname": {
        "$type": "pystr",
        "$props": {
          "min_chars": 10,
          "max_chars": 20
        }
      },
      "lastname": {
        "$type": "pystr",
        "$props": {
          "min_chars": 10,
          "max_chars": 20
        }
      }
    },
    "price": {
      "$type": "pyfloat",
      "$props": {
        "right_digits": 2,
        "positive": true
      }
    }
}

输出应为:

{id:pyint  , firstname:pystr   , lastname:pystr ,  price:pyfloat}

要存储的数据结构无关紧要,只要保持项目之间的对应关系即可。

1 个答案:

答案 0 :(得分:0)

您可以使用一个函数来递归地在子指标中寻找'$type'键:

def recurse(d):
    for k, v in d.items():
        if isinstance(v, dict):
            if '$type' in v:
                yield k, v['$type']
            yield from recurse(v)

因此,假设您的JSON对象已加载到变量d中,则dict(recurse(d))将返回:

{'id': 'pyint', 'firstname': 'pystr', 'lastname': 'pystr', 'price': 'pyfloat'}