重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
这篇文章主要为大家详细介绍了怎么中python中对Json与object进行转换,文中示例代码介绍的非常详细,具有一定的参考价值,发现的小伙伴们可以参考一下:
霍邱网站制作公司哪家好,找创新互联建站!从网页设计、网站建设、微信开发、APP开发、响应式网站等网站项目制作,到程序开发,运营维护。创新互联建站从2013年开始到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选创新互联建站。Python是一种跨平台的、具有解释性、编译性、互动性和面向对象的脚本语言,其最初的设计是用于编写自动化脚本,随着版本的不断更新和新功能的添加,常用于用于开发独立的项目和大型项目。
python提供了json包来进行json处理,json与python中数据类型对应关系如下:
一个python object无法直接与json转化,只能先将对象转化成dictionary,再转化成json;对json,也只能先转换成dictionary,再转化成object,通过实践,源码如下:
import json class user: def __init__(self, name, pwd): self.name = name self.pwd = pwd def __str__(self): return 'user(' + self.name + ',' + self.pwd + ')' #重写JSONEncoder的default方法,object转换成dict class userEncoder(json.JSONEncoder): def default(self, o): if isinstance(o, user): return { 'name': o.name, 'pwd': o.pwd } return json.JSONEncoder.default(o) #重写JSONDecoder的decode方法,dict转换成object class userDecode(json.JSONDecoder): def decode(self, s): dic = super().decode(s) return user(dic['name'], dic['pwd']) #重写JSONDecoder的__init__方法,dict转换成object class userDecode2(json.JSONDecoder): def __init__(self): json.JSONDecoder.__init__(self, object_hook=dic2objhook) # 对象转换成dict def obj2dict(obj): if (isinstance(obj, user)): return { 'name': obj.name, 'pwd': obj.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 = json.dumps(obj2dict(u)) print('uobj: ', uobj) #第二种方式,利用json.dumps的关键字参数default u = user('smith', '123456') uobj2 = json.dumps(u, default=obj2dict) print('uobj2: ', uobj) #第三种方式,定义json的encode和decode子类,使用json.dumps的cls默认参数 user_encode_str = json.dumps(u, cls=userEncoder) print('user2json: ', user_encode_str) #json转换为object u2 = json.loads(user_encode_str, cls=userDecode) print('json2user: ', u2) #另一种json转换成object的方式 u3 = json.loads(user_encode_str, cls=userDecode2) print('json2user2: ', u3)
输出结果如下:
C:\python\python.exe C:/Users/Administrator/PycharmProjects/pytest/com/guo/myjson.py uobj: {"name": "smith", "pwd": "123456"} uobj2: {"name": "smith", "pwd": "123456"} user2json: {"name": "smith", "pwd": "123456"} json2user: user(smith,123456) json2user2: user(smith,123456) Process finished with exit code 0
以上就是创新互联成都网站设计公司小编为大家收集整理的怎么中python中对Json与object进行转换,如何觉得创新互联成都网站设计公司网站的内容还不错,欢迎将创新互联成都网站设计公司网站推荐给身边好友。
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、网站设计器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。