当前位置: 首页 > article >正文

05 - python操作JSON

JSON认识

JSON,一种轻量级的文本数据交换格式,比XML更小更快,更易解析,爬虫经常要获取接口数据,接口数据就是JSON格式的。

格式示例

# 格式1:JSON 对象
{"name": "李嘉图", "age": 18}

# 格式2:JSON 数组
{
    "student":
        [
            {"name": "李嘉图", "age": 18},
            {"name": "凯撒", "age": 18},
            {"name": "楚子航", "age": 18}
        ]
}

常用的JSON模块方法

方法功能
json.dumps(obj)        将python数据类型转换为json格式的字符串
json.dump(obj, filePath)将python数据类型转换并保存到json格式的文件内
json.loads(s)将json格式的字符串转换为python的类型
json.load(filePath)从json格式的文件中读取数据并转换成python的类型

带s的都是和字符串相关的,不带s的都是和文件相关的。

json.dumps()

将python数据类型转换为json格式的字符串

test_json.py

# 导入json模块
import json

# 创建person的人员字典
person = {"name": "李嘉图", "age": 18, "sex": "男"}
print(type(person))

# 将python对象转换为json字符串
jsonStr = json.dumps(person)
print(type(jsonStr))

输出结果

<class 'dict'>
<class 'str'>

格式化json,使方便阅读

# 导入json模块
import json

# 创建person的人员字典
person = {"name": "李嘉图", "age": 18, "sex": "男"}

# 将python对象转换为json字符串
jsonStr = json.dumps(person)
print(jsonStr)

# json字符串格式化
print(json.dumps(person, sort_keys=True, indent=4, separators=(',', ': ')))

输出结果

{"name": "\u674e\u5609\u56fe", "age": 18, "sex": "\u7537"}
{
    "age": 18,
    "name": "\u674e\u5609\u56fe",
    "sex": "\u7537"
}
  • sort_keys:是否排序
  • indent:定义缩进距离
  • separators:是一个元组,定义分隔符类型

将json字符串写入json文件

json_write.py

# 导入json模块
import json

# 创建person的人员字典
person = {"name": "李嘉图", "age": 18, "sex": "男"}

# 将python对象转换为json字符串
jsonStr = json.dumps(person, sort_keys=True, indent=4, separators=(',', ': '))

# 写入文件
with open('json_write.json', 'w', encoding='utf-8') as f:
    f.write(jsonStr)

运行程序

json.dump()

同样是将字符串存储到json格式的文件内,使用dump()不需要write()方法

# 导入json模块
import json

# 创建person的人员字典
person = {"name": "李嘉图", "age": 18, "sex": "男"}

# 将python对象转换为json字符串
json.dump(person, open('json_dump.json', 'w'), sort_keys=True, indent=4, separators=(',', ': '))

输出

直接写入文件用下面的方便点,但是如果在写入的过程中需要操作字符串的业务,就选上面那种。

json.loads()

# 导入json模块
import json

# 创建person的人员字典
person = {"name": "李嘉图", "age": 18, "sex": "男"}

# 将python对象转换为json字符串
jsonStr = json.dumps(person)
print(type(jsonStr))

# 将json字符串转换为python类型
python_type = json.loads(jsonStr)
print(python_type)
print(type(python_type))

输出结果

<class 'str'>
{'name': '李嘉图', 'age': 18, 'sex': '男'}
<class 'dict'>

在实际的业务中,获取到了接口的json数据,转换成python对象之后,就可以进行后续的业务操作。

读取json文件

# 导入json模块
import json

f = open('json_write.json')
json_str = f.read()
python_type = json.loads(json_str)
print(python_type)
print(type(python_type))

f.close()

输出

{'age': 18, 'name': '李嘉图', 'sex': '男'}
<class 'dict'>

json.load()

# 导入json模块
import json

python_type = json.load(open('json_write.json'))
print(python_type)
print(type(python_type))

输出

{'age': 18, 'name': '李嘉图', 'sex': '男'}
<class 'dict'>

两者不同之处,上面的传入的是json字符串,下面的传入的是文件对象。

json字符串解析

# 导入json模块
import json

# 将json文件中的json对象转换为python对象
python_type = json.load(open('json_write.json'))

# 解析python对象
print(python_type.keys())
print(python_type.values())
print(python_type["name"])
print(python_type["age"])
print(python_type["sex"])

输出结果

dict_keys(['age', 'name', 'sex'])
dict_values([18, '李嘉图', '男'])
李嘉图
18
男


http://www.kler.cn/a/228175.html

相关文章:

  • ThinkPhp伪静态设置后,访问静态资源也提示找不到Controller
  • Final2x--开源AI图片放大工具
  • docker使用笔记
  • 【深度学习】搭建PyTorch神经网络进行气温预测
  • 【Unity3D】《跳舞的线》游戏的方块单方向拉伸实现案例
  • pandas基础:基本数据结构
  • 安卓9宫格密码键盘
  • 装饰你的APP:使用Lottie-Android创建动画效果
  • 2024清洁能源、环境与智慧城市国际研讨会(ISCEESC2024)
  • 如何使用第三方API采集电商数据呢?
  • Jetson AGX Orin安装Anaconda,Cuda,Cudnn,pytorch,Tensorrt,ROS
  • 【爬虫实战】全过程详细讲解如何使用python获取抖音评论,包括二级评论
  • Java后端面试总结
  • 一文讲明Jetpack中的图片组件
  • openEuler 22.03 docker安装elasticsearch 7.17.17
  • 【云原生运维问题记录】kubesphere登录不跳转问题
  • docker- php7.4
  • 【Linux】EXT2文件系统 | 磁盘分区块组 | inode
  • 基于springboot智慧养老平台源码和论文
  • 1.0 Hadoop 教程
  • 深度学习在智能交互中的应用:人与机器的和谐共生
  • 【下一代分布式追踪】将Trace扩展到网络设备
  • web 技术栈有哪些?
  • SQL Server之DML触发器
  • docker 构建个人博客网站
  • 《Python 网络爬虫简易速速上手小册》第3章:Python 网络爬虫的设计(2024 最新版)