我有以下输入: https://textuploader.com/dz3xo
这包含两个订单。
可以使用以下命令将输入转换为Json:
print json.dumps(response2)
我想操纵此输入以显示为如下所示的Json:
https://jsonblob.com/85f329dc-994c-11e8-8a91-931af4d591d9
操作很简单:删除任何Sub-Json并加入其父Json。
我编写了以下函数:
def flatten_json(y):
out = {}
def flatten(x, name=''):
if type(x) is dict:
for a in x:
flatten(x[a], name + str(a) + '_')
elif type(x) is list:
out[name[:-1]] = x
else:
out[name[:-1]] = x
flatten(y)
return out
def generatejson2(response2):
sample_object = pd.DataFrame(response2).to_dict()
flat = {k: flatten_json(v) for k, v in sample_object.items()}
return json.dumps(flat, sort_keys=True)
response2 = Func_Create_Data()
flat_json = generatejson2(response2)
它在同一索引下混合来自两个订单的数据。行号绝对不能在索引名称中。
我的代码找不到问题。知道怎么了吗?
答案 0 :(得分:1)
您的展平功能应该可以正常工作,确定要在一行中提供正确的信息
flat = {k: flatten_json(v) for k, v in sample_object.items()}
看起来很像该行中的'k'是['customer','shippingAddress',...]而不是预期的['0','1']。我的猜测是您应该有一个
0_country_currency_id: 2
在您的送货地址内?