Python中如何将非内置数据类型导出成Json格式

前言:

        在Python开发中往往使用自定义的数据类型来封装属性特定对象。但是这些自定义的数据类型在导出成Json文件时往往会报出不支持的错误。本篇文章将介绍如何解决这个问题。

操作步骤:

1、创建自定义数据类型:

from dataclasses import dataclass
import json
@dataclass
class OwnObject():
    prop1:str
    prop2:int

2、将自定义数据类型导出到Json文件中:

ownObjList = []
ownObjList.append(OwnObject('param1',1))
ownObjList.append(OwnObject('param2',2))
ownObjList.append(OwnObject('param2',3))

with open('OwnObj.json','w') as f:
    json.dump(ownObjList,f)

3、运行程序:

可以看到最后一行报错。OwnObject不支持Json序列化。

解决方法:

1、首先在自定义的数据类型中加入to_json的函数

@dataclass
class OwnObject():
    prop1:str
    prop2:int

    def to_json(self):
        return self.__dict__.copy()

2、然后在json.dump中加入lambda表达式 :

from dataclasses import dataclass
import json
@dataclass
class OwnObject():
    prop1:str
    prop2:int

    def to_json(self):
        return self.__dict__.copy()

ownObjList = []
ownObjList.append(OwnObject('param1',1))
ownObjList.append(OwnObject('param2',2))
ownObjList.append(OwnObject('param2',3))

with open('OwnObj.json','w') as f:
    json.dump(ownObjList,f,default=lambda x: x.to_json())

3、导出的Json文件:

[{"prop1": "param1", "prop2": 1}, {"prop1": "param2", "prop2": 2}, {"prop1": "param2", "prop2": 3}]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值