在Python中,json 模块提供了一个非常方便的方法来处理JSON数据。无论是将Python对象转换为JSON格式(序列化),还是将JSON格式的数据解析为Python对象(反序列化),json 模块都能满足你的需求。
序列化:从Python对象到JSON
使用 json.dumps()
json.dumps() 函数用于将Python对象转换为JSON格式的字符串。
在这个例子中,我们定义了一个包含一些基本信息的字典,并使用 json.dumps() 方法将其转换为JSON格式的字符串。ensure_ascii=False 参数确保非ASCII字符能够正确显示。
写入文件
如果你想要直接将JSON数据写入文件,可以使用 json.dump() 方法:
这里,indent=4 参数使得输出更加美观易读。
反序列化:从JSON到Python对象
使用 json.loads()
json.loads() 函数用于将JSON格式的字符串转换为Python对象。
这个例子展示了如何将一个JSON字符串转换回Python对象(在这个案例中是一个字典)。
从文件读取
如果你想从文件中读取JSON数据并转换为Python对象,可以使用 json.load() 方法:
其他常用选项
sort_keys:如果设置为 True,则输出的JSON对象中的键会按照字母顺序排序。
separators:允许你自定义分隔符,默认是 (', ', ': ')。例如,为了生成最紧凑的JSON表示形式,可以使用 (',', ':')。
注意事项
类型对应:需要注意的是,Python与JSON之间存在特定的数据类型映射规则。例如,Python中的 dict 对应于JSON中的对象,list 和 tuple 都映射为JSON数组等。
安全性:虽然 json 模块非常适合处理普通的JSON数据交换任务,但它并不适合处理不可信来源的数据。对于更复杂或潜在不安全的数据源,考虑使用其他方法如 pickle(尽管它也有自己的安全问题),或者使用专门的安全库。