Python实现复杂对象转JSON的方法示例


Posted in Python onJune 22, 2017

本文实例讲述了Python实现复杂对象转JSON的方法。分享给大家供大家参考,具体如下:

在Python对于简单的对象转json还是比较简单的,如下:

import json
d = {'a': 'aaa', 'b': ['b1', 'b2', 'b3'], 'c': 100}
json_str = json.dumps(d)
print json_str

对于复杂对象,可以使用下面的方法来实现,比如:

import json
class Customer:
  def __init__(self, name, grade, age, home, office):
    self.name = name
    self.grade = grade
    self.age = age
    self.address = Address(home, office)
  def __repr__(self):
    return repr((self.name, self.grade, self.age, self.address.home, self.address.office))
class Address:
  def __init__(self, home, office):
    self.home = home
    self.office = office
  def __repr__(self):
    return repr((self.name, self.grade, self.age))
customers = [
    Customer('john', 'A', 15, '111', 'aaa'),
    Customer('jane', 'B', 12, '222', 'bbb'),
    Customer('dave', 'B', 10, '333', 'ccc'),
    ]
json_str = json.dumps(customers, default=lambda o: o.__dict__, sort_keys=True, indent=4)
print json_str

结果如下

[
  {
    "address": {
      "home": "111",
      "office": "aaa"
    },
    "age": 15,
    "grade": "A",
    "name": "john"
  },
  {
    "address": {
      "home": "222",
      "office": "bbb"
    },
    "age": 12,
    "grade": "B",
    "name": "jane"
  },
  {
    "address": {
      "home": "333",
      "office": "ccc"
    },
    "age": 10,
    "grade": "B",
    "name": "dave"
  }
]
Python 相关文章推荐
python中readline判断文件读取结束的方法
Nov 08 Python
Python2.7读取PDF文件的方法示例
Jul 13 Python
基于Django模板中的数字自增(详解)
Sep 05 Python
PyCharm 常用快捷键和设置方法
Dec 20 Python
python @property的用法及含义全面解析
Feb 01 Python
如何使用VSCode愉快的写Python于调试配置步骤
Apr 06 Python
Python爬虫之正则表达式的使用教程详解
Oct 25 Python
浅谈python下含中文字符串正则表达式的编码问题
Dec 07 Python
python钉钉机器人运维脚本监控实例
Feb 20 Python
Python中的asyncio代码详解
Jun 10 Python
Python读取xlsx文件的实现方法
Jul 04 Python
Python机器学习之KNN近邻算法
May 14 Python
Collatz 序列、逗号代码、字符图网格实例
Jun 22 #Python
基于Python3 逗号代码 和 字符图网格(详谈)
Jun 22 #Python
Tornado协程在python2.7如何返回值(实现方法)
Jun 22 #Python
使用python在本地电脑上快速处理数据
Jun 22 #Python
python2.7 mayavi 安装图文教程(推荐)
Jun 22 #Python
python 字符串转列表 list 出现\ufeff的解决方法
Jun 22 #Python
Python查询IP地址归属完整代码
Jun 21 #Python
You might like
一个ftp类(ini.php)
2006/10/09 PHP
DedeCMS dede_channeltype表字段注释
2010/04/07 PHP
PHP生成图片验证码、点击切换实例
2014/06/25 PHP
php如何连接sql server
2015/10/16 PHP
WordPress免插件实现面包屑导航的示例代码
2020/08/20 PHP
JavaScript 基于原型的对象(创建、调用)
2009/10/16 Javascript
JS实现网页表格自动变大缩小的方法
2015/03/09 Javascript
javascript中 try catch用法
2015/08/16 Javascript
jquery easyui datagrid实现增加,修改,删除方法总结
2016/05/25 Javascript
AngularJS入门教程之MVC架构实例分析
2016/11/01 Javascript
js实现微博发布小功能
2017/01/12 Javascript
codeMirror插件使用讲解
2017/01/16 Javascript
AngularJS学习第一篇 AngularJS基础知识
2017/02/13 Javascript
jQuery插件FusionCharts实现的3D柱状图效果实例【附demo源码下载】
2017/03/03 Javascript
Angular 4依赖注入学习教程之Injectable装饰器(六)
2017/06/04 Javascript
为什么我们要做三份 Webpack 配置文件
2017/09/18 Javascript
vue中使用axios post上传头像/图片并实时显示到页面的方法
2018/09/27 Javascript
基于mpvue搭建微信小程序项目框架的教程详解
2019/04/10 Javascript
js作用域和作用域链及预解析
2019/04/11 Javascript
在JavaScript中如何访问暂未存在的嵌套对象
2019/06/18 Javascript
解决使用layui的时候form表单中的select等不能渲染的问题
2019/09/18 Javascript
微信小程序scroll-view锚点链接滚动跳转功能
2019/12/12 Javascript
js实现div色块拖动录制
2020/01/16 Javascript
[52:03]DOTA2-DPC中国联赛 正赛 Ehome vs iG BO3 第三场 1月31日
2021/03/11 DOTA
使用pdb模块调试Python程序实例
2015/06/02 Python
Django + Uwsgi + Nginx 实现生产环境部署的方法
2018/06/20 Python
详解利用python+opencv识别图片中的圆形(霍夫变换)
2019/07/01 Python
解决torch.autograd.backward中的参数问题
2020/01/07 Python
兰蔻美国官网:Lancome美国
2017/04/25 全球购物
Linux如何压缩可执行文件
2013/10/21 面试题
校运会广播稿100字
2014/01/27 职场文书
一年级班主任感言
2014/03/08 职场文书
安全教育月活动总结
2014/05/05 职场文书
2016年“我们的节日·端午节”活动总结
2016/04/01 职场文书
Python语言内置数据类型
2022/02/24 Python
《艾尔登法环》Boss腐烂树灵很有可能是《黑暗之魂3》的一个废案
2022/04/11 其他游戏