Python对象转换为JSON格式,可使用内置的
json
模块进行序列化。
在Python中,将对象转换为JSON格式是一种常见的数据交换方式,JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成,Python标准库中的json
模块提供了将Python对象转换为JSON格式的功能。
基本转换方法
使用json.dumps()
函数可以将Python对象转换为JSON字符串,这个函数接受一个Python对象作为参数,并返回一个JSON格式的字符串。
import json data = { 'name': '张三', 'age': 30, 'city': '北京' } json_str = json.dumps(data) print(json_str)
输出结果:
{"name": "张三", "age": 30, "city": "北京"}
自定义序列化
我们需要对某些不可序列化的对象进行自定义序列化,这时,我们可以使用json.dumps()
函数的default
参数来指定一个自定义的序列化函数。
import json class Person: def __init__(self, name, age): self.name = name self.age = age def person_serializer(obj): if isinstance(obj, Person): return {'name': obj.name, 'age': obj.age} raise TypeError("Type not serializable") person = Person('张三', 30) json_str = json.dumps(person, default=person_serializer) print(json_str)
输出结果:
{"name": "张三", "age": 30}
将JSON字符串转换为Python对象
json.loads()
函数可以将JSON字符串转换为Python对象,这个函数接受一个JSON格式的字符串作为参数,并返回一个对应的Python对象。
import json json_str = '{"name": "张三", "age": 30, "city": "北京"}' data = json.loads(json_str) print(data)
输出结果:
{'name': '张三', 'age': 30, 'city': '北京'}
将Python对象保存到文件
json.dump()
函数可以将Python对象保存到文件,这个函数接受两个参数:第一个参数是Python对象,第二个参数是一个文件对象。
import json data = { 'name': '张三', 'age': 30, 'city': '北京' } with open('data.json', 'w') as f: json.dump(data, f)
这样,我们就将data
对象保存到了名为data.json
的文件中。
从文件读取Python对象
json.load()
函数可以从文件中读取Python对象,这个函数接受一个文件对象作为参数,并返回一个对应的Python对象。
import json with open('data.json', 'r') as f: data = json.load(f) print(data)
输出结果:
{'name': '张三', 'age': 30, 'city': '北京'}
相关问题与解答
1、如何将包含中文的字符串转换为JSON格式?
答:直接使用json.dumps()
函数即可,Python 3默认支持UTF-8编码,不需要额外处理。
2、如果遇到不可序列化的对象,该如何处理?
答:可以使用json.dumps()
函数的default
参数来指定一个自定义的序列化函数。
3、如何将JSON字符串转换为Python对象?
答:使用json.loads()
函数可以将JSON字符串转换为Python对象。
4、如何将Python对象保存到文件或从文件读取Python对象?
答:使用json.dump()
函数可以将Python对象保存到文件,使用json.load()
函数可以从文件中读取Python对象。
评论(0)