python中Json与object转化

时间:2025-03-28 13:35:26
import json class user: def __init__(self, name, pwd): = name = pwd def __str__(self): return 'user(' + + ',' + + ')' #重写JSONEncoder的default方法,object转换成dict class userEncoder(): def default(self, o): if isinstance(o, user): return { 'name': , 'pwd': } return (o) #重写JSONDecoder的decode方法,dict转换成object class userDecode(): def decode(self, s): dic = super().decode(s) return user(dic['name'], dic['pwd']) #重写JSONDecoder的__init__方法,dict转换成object class userDecode2(): def __init__(self): .__init__(self, object_hook=dic2objhook) # 对象转换成dict def obj2dict(obj): if (isinstance(obj, user)): return { 'name': , 'pwd': } else: return obj # dict转换为对象 def dic2objhook(dic): if isinstance(dic, dict): return user(dic['name'], dic['pwd']) return dic # 第一种方式,直接把对象先转换成dict u = user('smith', '123456') uobj = (obj2dict(u)) print('uobj: ', uobj) #第二种方式,利用的关键字参数default u = user('smith', '123456') uobj2 = (u, default=obj2dict) print('uobj2: ', uobj) #第三种方式,定义json的encode和decode子类,使用的cls默认参数 user_encode_str = (u, cls=userEncoder) print('user2json: ', user_encode_str) #json转换为object u2 = (user_encode_str, cls=userDecode) print('json2user: ', u2) #另一种json转换成object的方式 u3 = (user_encode_str, cls=userDecode2) print('json2user2: ', u3)