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中利用Into包整洁地进行数据迁移的教程
Mar 30 Python
开源Web应用框架Django图文教程
Mar 09 Python
Python学习思维导图(必看篇)
Jun 26 Python
Python双精度浮点数运算并分行显示操作示例
Jul 21 Python
Python实现解析Bit Torrent种子文件内容的方法
Aug 29 Python
替换python字典中的key值方法
Jul 06 Python
Python 中的参数传递、返回值、浅拷贝、深拷贝
Jun 25 Python
pandas DataFrame行或列的删除方法的实现示例
Aug 02 Python
python redis 批量设置过期key过程解析
Nov 26 Python
Django Model层F,Q对象和聚合函数原理解析
Nov 12 Python
python字符串的多行输出的实例详解
Jun 08 Python
python神经网络 使用Keras构建RNN训练
May 04 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
模仿OSO的论坛(一)
2006/10/09 PHP
PHP+SQL 注入攻击的技术实现以及预防办法
2010/12/29 PHP
如何修改和添加Apache的默认站点目录
2013/07/05 PHP
ThinkPHP整合datatables实现服务端分页的示例代码
2018/02/10 PHP
Jquery 动态添加按钮实现代码
2010/05/06 Javascript
javascript中不等于的代码是什么怎么写
2013/12/29 Javascript
js模拟hashtable的简单实例
2014/03/06 Javascript
JavaScript中的函数的两种定义方式和函数变量赋值
2014/05/12 Javascript
JavaScript中的console.profile()函数详细介绍
2014/12/29 Javascript
js预加载图片方法汇总
2015/06/15 Javascript
javascript简单实现滑动菜单效果的方法
2015/07/27 Javascript
探讨JavaScript中的Rest参数和参数默认值
2015/07/29 Javascript
js基于面向对象实现网页TAB选项卡菜单效果代码
2015/09/09 Javascript
jquery调整表格行tr上下顺序实例讲解
2016/01/09 Javascript
jQuery实现div拖拽效果实例分析
2016/02/20 Javascript
js实现千分符和保留几位小数的简单实例
2016/08/01 Javascript
微信小程序 标签传入数据
2017/05/08 Javascript
微信小程序自定义导航隐藏和显示功能
2017/06/13 Javascript
对vue里函数的调用顺序介绍
2018/03/17 Javascript
初学node.js中实现删除用户路由
2019/05/27 Javascript
使用jQuery实现掷骰子游戏
2019/10/24 jQuery
[41:37]DOTA2北京网鱼队选拔赛——冲击职业之路
2015/04/13 DOTA
python 测试实现方法
2008/12/24 Python
Django应用程序中如何发送电子邮件详解
2017/02/04 Python
python 利用pandas将arff文件转csv文件的方法
2019/02/12 Python
pandas条件组合筛选和按范围筛选的示例代码
2019/08/26 Python
python sorted函数的小练习及解答
2019/09/18 Python
Python Django搭建网站流程图解
2020/06/13 Python
五款漂亮的纯CSS3动画按钮的实例教程
2014/11/21 HTML / CSS
求两个数的乘积和商数,该作用由宏定义来实现
2013/03/13 面试题
面试后的英文感谢信
2014/02/01 职场文书
《小石潭记》教学反思
2014/02/13 职场文书
2014年感恩母亲演讲稿
2014/05/27 职场文书
创业计划书之家教中心
2019/09/25 职场文书
怎么禁用Windows 11快照布局? win11不使用快照布局的技巧
2021/11/21 数码科技
Spring Bean是如何初始化的详解
2022/03/22 Java/Android