【发布时间】:2019-10-09 11:59:38
【问题描述】:
我的 JSON 文件如下所示 -
sample4 = {
"a": 1,
"b": 2,
"c": 3,
"d": [{"a": 5, "b": 6}, {"a": 7, "b": 8}],
"e": [{"a": 1}, {"a": 2}],
"f": 9,
"g": [{"a": 5, "b": 6}, {"a": 7, "b": 8}]
}
我用于扁平化 JSON 的代码是 -
def flatten_json(y):
out = {}
def no_mas(x, name=''):
out[name[:-1]] = x
def flatten(x, name=''):
if type(x) is dict:
for a in x:
if a == 'MetaDataList':
no_mas(x[a], name + a + '_')
else:
flatten(x[a], name + a + '_')
elif type(x) is list:
i = 0
for a in x:
flatten(a, name)
i += 1
else:
out[name[:-1]] = x
flatten(y)
return out
这是我得到的输出 -
但我正在寻找这个输出 -
【问题讨论】:
-
请多解释一下代码应该做什么。 sample4 的键可以是“MetaDataList”吗? flatten 的输出究竟应该是什么样子?
-
代码在嵌套的 JSON 文件中,输出应该是扁平化的 JSON 文件。扁平化 JSON 的输出应如下所示 - {{"a": 1, "b": 2, "c": 3,"d_a": 5, "d_b": 6, "e_a": 1, "f" :9,“g_a”:5,“g_b”:6},{“a”:1,“b”:2,“c”:3,“d_a”:7,“d_b”:8,“e_a” : 2, "f":9, "g_a":7, "g_b":8}}
-
这不是有效的 JSON。外面的
{}应该是[],也就是一个列表吗? -
应该是[]。对不起。
标签: python json python-3.x