将带有上下级children关系的json转为有上下级的表

博客围绕JSON数据展开,介绍了使用Python编写的转换程序,展示了转换结果,并说明了如何将其转为DataFrame格式,体现了Python在处理JSON数据方面的应用。

一、json数据

data = {'name': 'b1',
 'id': 1,
 'p_id': 0,
 'children': [{'name': 'b2',
   'id': 2,
   'p_id': 1,
   'children': [{'name': 'b4',
     'id': 4,
     'p_id': 2,
     'children': [{'name': 'b6', 'id': 6, 'p_id': 4}]}]},
  {'name': 'b3',
   'id': 3,
   'p_id': 1,
   'children': [{'name': 'b5', 'id': 5, 'p_id': 3}]}]}

二、转换程序

out=[]
o_1={}
for k_1,v_1 in data.items():
    if k_1 != 'children':
        o_1[k_1]=v_1
    elif k_1== 'children': 

        for c_2 in v_1:
            o_2={}
            for k_2,v_2 in c_2.items():
                if k_2 != 'children':
                    o_2[k_2]=v_2
                    print(o_2)
                elif k_2 == 'children':

                    for c_3 in v_2:
                        o_3={}
                        for k_3,v_3 in c_3.items():
                            if k_3 != 'children':
                                o_3[k_3]=v_3
                            elif k_3 == 'children':
                                for c_4 in v_3:
                                    pass
#                         print('o_2',o_2)
                        out.append(o_3)
#             print('o_2',o_2)
            out.append(o_2)
out.append(o_1)
out

三、结果

[{'name': 'b4', 'id': 4, 'p_id': 2},
 {'name': 'b2', 'id': 2, 'p_id': 1},
 {'name': 'b5', 'id': 5, 'p_id': 3},
 {'name': 'b3', 'id': 3, 'p_id': 1},
 {'name': 'b1', 'id': 1, 'p_id': 0}]

四、转为dataframe格式

import pandas as pd
df = pd.DataFrame(out)
df = df.sort_values('id')
df

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值