Python之json模块
1.python的json模块介绍
Python 的 json 模块提供了处理 JSON 数据的功能。JSON(JavaScript Object Notation)是一种轻量级的文本数据格式,使用类似于 JavaScript 对象的方式表示数据。本文将详细介绍 json 模块的所有方法分类,以及含有示例代码。
2. JSON 编码与解码
json 模块提供了将 JSON 数据编码为 Python 对象和将 Python 对象解码为 JSON 数据的方法:
- dumps(obj, *, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, default=None, sort_keys=False, **kw):将 Python 对象 obj 转换成 JSON 格式的字符串表示。
- **dump(obj, fp, *, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, default=None, sort_keys=False, **kw):将 Python 对象 obj 转换成 JSON 格式后写入文件对象 fp 中。
- loads(s, *, cls=None, object_hook=None, parse_float=None, parse_int=None, parse_constant=None, object_pairs_hook=None, **kw):将 JSON 格式的字符串 s 转换成 Python 对象。 **
- **load(fp, *, cls=None, object_hook=None, parse_float=None, parse_int=None, parse_constant=None, object_pairs_hook=None, **kw):从文件对象 fp 中读取 JSON 数据并将其转换成 Python 对象。
import json
# 实现自定义的对象转换方法
def from_json_string(json_string):
data = json.loads(json_string, object_hook=convert_date)
return data
def convert_date(obj):
if '__type__' in obj and obj['__type__'] == 'datetime':
return datetime.strptime(obj['isoformat'], '%Y-%m-%dT%H:%M:%S.%f')
return obj
# 将 JSON 字符串转换成 Python 对象
json_str = '{"name": "Alice", "age": 25, "birthday": {"__type__": "datetime", "isoformat": "1996-12-20T08:00:00.000000"}}'
data = from_json_string(json_str)
print(data) # {'name': 'Alice', 'age': 25, 'birthday': datetime.datetime(1996, 12, 20, 8, 0)}
3. JSON 编码的高级选项
json 模块提供了一些高级选项,允许用户更精细地控制 JSON 编码器的行为:
- ensure_ascii:指定是否使用 ASCII 码转义非 ASCII 字符,默认为 True。
- allow_nan:指定是否允许编码 NaN 和 Infinity,默认为 True。
- indent:指定输出格式中缩进的空格数。
- sort_keys:指定是否按照键的字典序排序输出。
import json
# 将 Python 对象转换成 JSON 字符串
data = {
"name": "Alice",
"age": 25,
"city": "Shanghai",
"scores": {
"math": 90,
"physics": 85,
"chemistry": 95
}
}
json_str = json.dumps(data, ensure_ascii=False, indent=2, sort_keys=True)
print(json_str)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)