如何使用Python整理Json文件?

时间:2018-08-06 07:54:15

标签: python json

我有以下输入: 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)

但是这不是我想要的输出。它给: enter image description here

它在同一索引下混合来自两个订单的数据。行号绝对不能在索引名称中。

我的代码找不到问题。知道怎么了吗?

1 个答案:

答案 0 :(得分:1)

您的展平功能应该可以正常工作,确定要在一行中提供正确的信息

flat = {k: flatten_json(v) for k, v in sample_object.items()}

看起来很像该行中的'k'是['customer','shippingAddress',...]而不是预期的['0','1']。我的猜测是您应该有一个

0_country_currency_id: 2

在您的送货地址内?