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 相关文章推荐
解决windows下Sublime Text 2 运行 PyQt 不显示的方法分享
Jun 18 Python
python中的函数用法入门教程
Sep 02 Python
Python不同目录间进行模块调用的实现方法
Jan 29 Python
python tkinter canvas使用实例
Nov 04 Python
基于Django OneToOneField和ForeignKey的区别详解
Mar 30 Python
浅谈Tensorflow加载Vgg预训练模型的几个注意事项
May 26 Python
Python新手如何进行闭包时绑定变量操作
May 29 Python
Python 实现简单的客户端认证
Jul 29 Python
Python random模块的使用示例
Oct 10 Python
Python求区间正整数内所有素数之和的方法实例
Oct 13 Python
selenium+python实现基本自动化测试的示例代码
Jan 27 Python
python中random模块详解
Mar 01 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
php错误、异常处理机制(补充)
2012/05/07 PHP
解析Extjs与php数据交互(增删查改)
2013/06/25 PHP
php将字符串随机分割成不同长度数组的方法
2015/06/01 PHP
Laravel中如何增加自定义全局函数详解
2017/05/09 PHP
基于PHP的登录和注册的功能的实现
2020/08/06 PHP
一份老外写的XMLHttpRequest代码多浏览器支持兼容性
2007/01/11 Javascript
插件:检测javascript的内存泄漏
2007/03/04 Javascript
javascript getElementsByClassName 和js取地址栏参数
2010/01/02 Javascript
js中获取事件对象的方法小结
2011/03/13 Javascript
JS读取XML文件示例代码
2013/11/15 Javascript
javascript解析json数据的3种方式
2014/05/08 Javascript
jQuery表格插件datatables用法详解
2020/11/23 Javascript
如何使用Bootstrap 按钮实例详解
2017/03/29 Javascript
浅谈sass在vue注意的地方
2017/08/10 Javascript
NodeJs实现定时任务的示例代码
2017/12/05 NodeJs
vue移动端实现红包雨效果
2020/06/23 Javascript
vue-cli的build的文件夹下没有dev-server.js文件配置mock数据的方法
2019/04/17 Javascript
Electron-vue开发的客户端支付收款工具的实现
2019/05/24 Javascript
Vue 页面权限控制和登陆验证功能的实例代码
2019/06/20 Javascript
JS定时器如何实现提交成功提示功能
2020/06/12 Javascript
Vue+axios封装请求实现前后端分离
2020/10/23 Javascript
Python生成验证码实例
2014/08/21 Python
Python中defaultdict与lambda表达式用法实例小结
2018/04/09 Python
python tornado微信开发入门代码
2018/08/24 Python
Django中reverse反转并且传递参数的方法
2019/08/06 Python
基于Python共轭梯度法与最速下降法之间的对比
2020/04/02 Python
python模块内置属性概念及实例
2021/02/18 Python
使用tkinter实现三子棋游戏
2021/02/25 Python
使用HTML5拍照示例代码
2013/08/06 HTML / CSS
日本非常有名的内衣丝袜品牌:GUNZE
2017/01/06 全球购物
柏林通行证:Berlin Pass
2018/04/11 全球购物
编码转换,怎样实现将GB2312编码的字符串转换为ISO-8859-1编码的字符串
2014/01/07 面试题
学生鉴定评语大全
2014/05/05 职场文书
后勤工作个人总结
2015/02/28 职场文书
nginx常用配置conf的示例代码详解
2022/03/21 Servers
golang操作rocketmq的示例代码
2022/04/06 Golang