欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 产业 > python库 - json

python库 - json

2024/11/30 12:29:19 来源:https://blog.csdn.net/qq_52964132/article/details/140092777  浏览:    关键词: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 数据。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com