我想展平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}
要存储的数据结构无关紧要,只要保持项目之间的对应关系即可。
答案 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'}