python处理嵌套json格式数据

本文解决了一个在使用requests.post发送POST请求时遇到的常见错误:当尝试发送包含字典结构的数据时,未正确序列化导致的AttributeError。文章详细介绍了如何将嵌套的字典结构体转换为JSON格式,以避免这一错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

info={
    'user':{
        'name':'zl',
        'sex':'man'
    },
    'profession':'IT'
}

如果使用requests.post 模拟请求时,需要先将user的结构体转换一下格式,也就是

user={
        'name":'zl',
        'sex":'man'
    }
json.dumps(user)

然后再请求


requests.post(url, data={'data': {'user':json.dumps(user),'profession':'IT'}}, verify=False, headers=header)

否则会报:
error :AttributeError: 'str' object has no attribute 'items'在这里插入图片描述

Python处理嵌套JSON数据可以通过json和pandas等库实现。 使用json库可以将JSON数据转换为Python对象,然后使用Python数据处理方式进行操作。json库提供了两个函数——loads和dumps。其中,loads将JSON数据转换为Python对象,dumps将Python对象转换为JSON数据。在嵌套JSON数据的情况下,可以使用递归来遍历数据。 使用pandas库可以将JSON数据转换为DataFrame,方便进行数据分析和可视化处理。pandas提供了read_jsonjson_normalize等函数来解析JSON数据。其中,read_json函数将JSON数据转换为DataFrame,json_normalize函数可以展平嵌套JSON数据,方便进行数据分析处理。 例如,一个嵌套JSON数据如下: { "id": 123, "name": "John", "address": { "province": "Guangdong", "city": "Shenzhen", "street": "Futian Road" }, "scores": [ {"subject": "Math", "score": 90}, {"subject": "English", "score": 85}, {"subject": "Chinese", "score": 95} ] } 使用json库可以将其转换为Python对象,并进行操作: import json # 将JSON数据转换为Python对象 json_str = '{ "id": 123, "name": "John", "address": { "province": "Guangdong", "city": "Shenzhen", "street": "Futian Road" }, "scores": [ {"subject": "Math", "score": 90}, {"subject": "English", "score": 85}, {"subject": "Chinese", "score": 95} ] }' data_dict = json.loads(json_str) # 获取属性值 print(data_dict["id"]) print(data_dict["address"]["province"]) print(data_dict["scores"][0]["score"]) 使用pandas库可以将其转换为DataFrame,并进行数据分析和可视化处理: import pandas as pd # 将JSON数据转换为DataFrame data_df = pd.read_json(json_str) # 展示所有数据 print(data_df) # 展开嵌套JSON数据 data_norm = pd.json_normalize(data_dict, record_path=['scores'], meta=['id', 'name', ['address', 'province'], ['address', 'city'], ['address', 'street']]) print(data_norm) 这样就能方便地处理嵌套JSON数据了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值