我正在处理一个高度嵌套的json文件,该文件包含多个词典和列表。一些键是相似的,我想知道是否可以将每个词典放在不同的行中。没关系,如果某些列不相同,则值可以留为空白。
Json文件(与原始文件相似)
{
"ID": "01",
"session": [
{
"A": [
"abc",
"cde",
"efj"
],
"B": 14,
"C": 14,
"D": [
{
"F": {
"a": "ldjf",
"b": "kdj",
"ID": "01",
"c": "kjasgfk",
"d": [
"pw"
],
"e": "dsg"
}
},
{
"F": {
"a": "ldjewiorf",
"ID": "01",
"c": "kjasnbgfk",
"d": "mbxzc" ,
"e": "dsg"
}
},
{
"F": {
"f": "1232",
"g": "rege",
"h": "en-gb",
"i": "dfkj34",
"j": "iyt658"
}
}
],
"properties": {
"AA":"esg",
"BB": "skdjghk",
"CC": "adfkh",
"DD": "sdlkfh"
}
},
{
"A": [
"abc",
"cde",
"efj"
],
"B": 16,
"C": 14,
"D": [
{
"F": {
"a": "sdg",
"b": "sg",
"ID": "01",
"c": "sg",
"d": "shfh",
"e": "weitu"
}
},
{
"F": {
"f": "1232",
"m": "sdg",
"n": "en-sdg",
"o": "eqe",
"p": "sdg"
}
}
],
"properties": {
"AA":"ekjhsg",
"BB": "skkldjghk",
"CC": "adfyurkh",
"DD": "sdlkfmlh"
}
}
],
"G": {
"A1": {
"year": 2016,
"month": 5,
"dayOfMonth": 1,
"hourOfDay": 0,
"minute": 0,
"second": 0
},
"A2": "ksjdf",
"A3": "s38764",
"A4": [
{
"year": 2016,
"month": 5,
"dayOfMonth": 1,
"hourOfDay": 0,
"minute": 0,
"second": 0
}
]
}
}
我尝试了这段代码,但是将整个文件放在多列的1行中:
def flatten_json(y):
out = {}
def flatten(x, name=''):
if type(x) is dict:
for a in x:
flatten(x[a], name + a + '_')
elif type(x) is list:
i = 0
for a in x:
flatten(a, name + str(i) + '_')
i += 1
else:
out[name[:-1]] = x
flatten(y)
return out
我要解决的问题是否存在解决方案?