批量转换json数据内容

目的是将json格式的省市区编号数据中的编号和地址互换位置,采用了递归处理的思路:
原数据格式为:

{
    "110000": {
        "name": "北京市",
        "child": {
            "110100": {
                "name": "市辖区",
                "child": {
                    "110101": "东城区",
                    "110102": "西城区",
                    "110105": "朝阳区",
					...
                }
            }
        }
    },
    ...
}

如上,目的是将 ‘110000’与 ‘北京市’呼唤,‘110100’与‘市辖区’互换…。

def func0(data):
    demo_dict = dict()
    for k, v in data.items():  # "510101": "市辖区",
        if k.isdigit() and isinstance(v, dict):  # "820000": {...}
            if isinstance(v.get('child'), dict):
                demo_dict[v.get('name')] = {'name': k, 'child': func0(v.get('child'))}
            else:
                demo_dict[v.get('name')] = {'name': k, 'child': v.get('child')}
        else:
            demo_dict[v] = k
    return demo_dict


c = func0(dict_data)
json_data = json.dumps(c, ensure_ascii=False)


with open('yma.txt', "w", encoding='utf8') as f:  # 指定编解码格式防止中文乱码
    f.write(json_data)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值