处理json文件需要先导入json库,然后自定义字典数据内容。
要想保存json文件,需要先定义save_json函数将以上的data数据转化为json文件,之后调用save_json函数,传入参数data=data与file_path=data.json,也就是转化后的文件将以“data.json”命名,成功运行则输出一个句子表示文件成功转化并保存。
import json
data = {"Name": "Galaxy", "Age": 404, "City": "Ic"}
def save_json(data,file_path):
with open(file_path, 'w', encoding='utf-8') as f:
json.dump(data, f, ensure_ascii=False, indent=2)
save_json(data,"data.json")
print("Data has been seialized and save to 'data.json'.")
要想读取json文件则简单定义一个read_json文件,然后调用它并输出即可:
def read_json(json_file):
with open(json_file, 'r', encoding='utf-8') as fr:
js = json.load(fr)
return js
json_data=read_json("data.json")
print(json_data)
运行程序之后,确实生成了data.json文件,以及能正常输出data数据:
Data has been seialized and save to 'data.json'.
{'Name': 'Galaxy', 'Age': 404, 'City': 'Ic'}
补充:json.dump()函数:
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)
参数解释
- obj:要序列化的 Python 对象。例如,字典、列表等。
- fp:文件对象,必须以写入模式打开,并且支持写入字符串(str)而不是字节(bytes)。
关键字参数
-
skipkeys:如果为
True
,则会跳过无法作为键的对象(例如非基本类型的键),默认为False
。如果遇到无法作为键的对象,则会抛出TypeError
异常。 -
ensure_ascii:如果为
True
(默认),则会确保输出的 JSON 字符串中所有非 ASCII 字符都会被转义。如果为False
,则会按原样输出这些字符。 -
check_circular:如果为
False
,则不会检查容器类型的循环引用,可能导致RecursionError
或其他错误。默认值为True
。 -
allow_nan:如果为
False
,则会严格遵守 JSON 规范,遇到超出范围的浮点数值(例如NaN
、Infinity
)会抛出ValueError
异常。如果为True
,则会使用其 JavaScript 等价物(例如NaN
、Infinity
)来表示。默认值为True
。 -
cls:如果指定,则使用自定义的
JSONEncoder
子类来序列化对象。默认使用JSONEncoder
类。 -
indent:如果为非负整数或字符串,则会以缩进格式输出 JSON 数据。例如,
indent=4
表示每一级缩进 4 个空格。indent='\t'
表示使用制表符缩进。默认值为None
,表示最紧凑的格式。 -
separators:指定分隔符的元组。例如,
(',', ': ')
表示使用逗号和冒号分隔项目和键值对。默认情况下,如果indent
为None
,则使用(',', ': ')
,否则使用(',', ':')
。 -
default:如果指定了该参数,它应该是一个函数,用于处理无法序列化的对象。该函数应该返回一个可序列化的对象或抛出
TypeError
异常。 -
sort_keys:如果为
True
,则按键对字典进行排序。默认值为False
。 -
**kw:其他参数。
更多详细内容参考:json — JSON encoder and decoder — Python 3.12.4 documentation