@
allen0125 我用的方法,先将 JSON 转成 python dict,然后扁平化,最后用 tablib 去处理。
扁平化代码:
def flatten_json(maps, delimiter):
"""
flatten the Map object
:param maps: the map object
:param delimiter: the delimiter symbols
:return: A new dict object
"""
val = {}
for i in maps.keys():
if isinstance(maps[i], dict):
get = flatten_json(maps[i], delimiter)
for j in get.keys():
val[i + delimiter + j] = get[j]
elif isinstance(maps[i], (tuple, list)):
if maps[i]:
for item_seq in xrange(len(maps[i])):
item = maps[i][item_seq]
if not item:
continue
elif isinstance(item, (str, unicode)):
val[i] = ';'.join(maps[i])
break
elif isinstance(item, dict):
for j in item.keys():
val[i + delimiter + j+':'+str(item_seq)] = item[j]
else:
val[i] = None
else:
val[i] = maps[i]
return val