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)
标签:None,obj,Python,JSON,json,模块,True
From: https://www.cnblogs.com/zouzhibin/p/17234800.html