Python对象转换为JSON格式,可使用内置的json模块进序列化。

在Python中,将对象转换为JSON格式是一种常见的数据交换方式,JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成,Python标准库中的json模块提供了将Python对象转换为JSON格式的功能。

基本转换方法

Python对象转jsonPython对象转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)

输出结果:

Python对象转jsonPython对象转json

{'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格式?

Python对象转jsonPython对象转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对象。

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。