Python对象转json

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

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

输出结果:

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

原创文章,作者:酷盾叔,如若转载,请注明出处:https://www.kdun.com/ask/202280.html

本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。

(0)
酷盾叔订阅
上一篇 2024-02-05 06:22
下一篇 2024-02-05 06:24

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

产品购买 QQ咨询 微信咨询 SEO优化
分享本页
返回顶部
云产品限时秒杀。精选云产品高防服务器,20M大带宽限量抢购 >>点击进入