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

python库 - json

文章目录

      • 主要功能
      • 常用函数
        • 1. `json.dumps()`
        • 2. `json.loads()`
        • 3. `json.dump()`
        • 4. `json.load()`
      • 自定义序列化和反序列化
        • 自定义序列化
        • 自定义反序列化


json 是 Python 标准库中的一个模块,用于处理 JSON(JavaScript Object Notation)数据格式。JSON 是一种轻量级的数据交换格式,易于人类阅读和编写,同时也易于机器解析和生成。json 模块提供了将 Python 对象转换为 JSON 格式的字符串(序列化)以及将 JSON 格式的字符串转换为 Python 对象(反序列化)的功能。

主要功能

  1. 序列化(Encoding):将 Python 对象转换为 JSON 字符串。
  2. 反序列化(Decoding):将 JSON 字符串转换为 Python 对象。
  3. 文件操作:支持从文件中读取 JSON 数据或将 JSON 数据写入文件。
  4. 自定义序列化和反序列化:允许用户自定义对象的序列化和反序列化行为。

常用函数

1. json.dumps()

将 Python 对象转换为 JSON 格式的字符串。

import jsondata = {"name": "Alice","age": 30,"city": "New York"
}json_string = json.dumps(data)
print(json_string)

输出:

{"name": "Alice", "age": 30, "city": "New York"}
2. json.loads()

将 JSON 格式的字符串转换为 Python 对象。

import jsonjson_string = '{"name": "Alice", "age": 30, "city": "New York"}'
data = json.loads(json_string)
print(data)

输出:

{'name': 'Alice', 'age': 30, 'city': 'New York'}
3. json.dump()

将 Python 对象序列化为 JSON 格式并写入文件。

import jsondata = {"name": "Alice","age": 30,"city": "New York"
}with open('data.json', 'w') as f:json.dump(data, f)
4. json.load()

从文件中读取 JSON 数据并转换为 Python 对象。

import jsonwith open('data.json', 'r') as f:data = json.load(f)
print(data)

自定义序列化和反序列化

json 模块允许用户自定义对象的序列化和反序列化行为。可以通过定义 default 函数来实现自定义序列化,通过定义 object_hook 函数来实现自定义反序列化。

自定义序列化
import jsonclass Person:def __init__(self, name, age):self.name = nameself.age = agedef person_to_json(obj):if isinstance(obj, Person):return {'name': obj.name, 'age': obj.age}else:raise TypeError(f'Object of type {obj.__class__.__name__} is not JSON serializable')person = Person("Alice", 30)
json_string = json.dumps(person, default=person_to_json)
print(json_string)
自定义反序列化
import jsonclass Person:def __init__(self, name, age):self.name = nameself.age = agedef json_to_person(dct):if 'name' in dct and 'age' in dct:return Person(dct['name'], dct['age'])return dctjson_string = '{"name": "Alice", "age": 30}'
person = json.loads(json_string, object_hook=json_to_person)
print(person.name, person.age)

json 模块是 Python 中处理 JSON 数据的标准库,提供了丰富的功能来序列化和反序列化 JSON 数据。无论是简单的字典和列表,还是自定义的对象,json 模块都能很好地支持。通过灵活使用 json 模块,可以在 Python 程序中处理 JSON 数据。

相关文章:

  • 【51单片机入门】速通定时器
  • 关于目标检测的bbox
  • 银行卡二、三、四要素验证是什么?有什么意义?
  • Python123:计算天数、查找指定字符、字符串逆序(C语言)
  • 开源模型应用落地-FastAPI-助力模型交互-WebSocket篇(三)
  • 刀片服务器和机架式服务器有何区别
  • TongRDS2214手动部署版指引(by lqw+sy)
  • 高考失利咨询复读,银河补习班客服开挂回复
  • TS_类型
  • [今日一水]论坛该如何选择
  • C++编程(八)多态
  • Java的全局异常处理代码
  • Qt入门教程(一):Qt使用的基本知识
  • SQL面试题练习 —— 查询前2大和前2小用户并有序拼接
  • Vue 与 React 区别
  • 0x05 Python数据分析,Anaconda八斩刀
  • CSS 提示工具(Tooltip)
  •  D - 粉碎叛乱F - 其他起义
  • extjs4学习之配置
  • go append函数以及写入
  • hadoop入门学习教程--DKHadoop完整安装步骤
  • js学习笔记
  • leetcode378. Kth Smallest Element in a Sorted Matrix
  • Node项目之评分系统(二)- 数据库设计
  • Python中eval与exec的使用及区别
  • Spring Security中异常上抛机制及对于转型处理的一些感悟
  • 规范化安全开发 KOA 手脚架
  • 简单实现一个textarea自适应高度
  • 聊聊directory traversal attack
  • 如何利用MongoDB打造TOP榜小程序
  • 提醒我喝水chrome插件开发指南
  • 详解NodeJs流之一
  • Android开发者必备:推荐一款助力开发的开源APP
  • elasticsearch-head插件安装
  • ​无人机石油管道巡检方案新亮点:灵活准确又高效
  • ​一文看懂数据清洗:缺失值、异常值和重复值的处理
  • ​油烟净化器电源安全,保障健康餐饮生活
  • ### RabbitMQ五种工作模式:
  • #HarmonyOS:软件安装window和mac预览Hello World
  • #Linux(Source Insight安装及工程建立)
  • ${factoryList }后面有空格不影响
  • ( 10 )MySQL中的外键
  • (13)[Xamarin.Android] 不同分辨率下的图片使用概论
  • (Redis使用系列) Springboot 使用redis实现接口Api限流 十
  • (附源码)spring boot校园拼车微信小程序 毕业设计 091617
  • (简单有案例)前端实现主题切换、动态换肤的两种简单方式
  • (接口自动化)Python3操作MySQL数据库
  • (精确度,召回率,真阳性,假阳性)ACC、敏感性、特异性等 ROC指标
  • (力扣)1314.矩阵区域和
  • (六)软件测试分工
  • (转) Android中ViewStub组件使用
  • (转)Linux整合apache和tomcat构建Web服务器
  • (转)负载均衡,回话保持,cookie
  • .NET HttpWebRequest、WebClient、HttpClient
  • .Net Winform开发笔记(一)