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 相关文章推荐
教你如何在Django 1.6中正确使用 Signal
Jun 22 Python
python使用super()出现错误解决办法
Aug 14 Python
python爬虫之BeautifulSoup 使用select方法详解
Oct 23 Python
python3学习笔记之多进程分布式小例子
Feb 13 Python
从多个tfrecord文件中无限读取文件的例子
Feb 17 Python
python 弧度与角度互转实例
Apr 15 Python
在pycharm中debug 实时查看数据操作(交互式)
Jun 09 Python
PyCharm中配置PySide2的图文教程
Jun 18 Python
如何利用python和DOS获取wifi密码
Mar 31 Python
Python机器学习之KNN近邻算法
May 14 Python
python基础学习之生成器与文件系统知识总结
May 25 Python
python的变量和简单数字类型详解
Sep 15 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 特殊字符处理函数
2008/09/05 PHP
PHP学习之数组的定义和填充
2011/04/17 PHP
Windows下利用Gvim写PHP产生中文乱码问题解决方法
2011/04/20 PHP
PHP采用超长(超大)数字运算防止数字以科学计数法显示的方法
2016/04/01 PHP
PHP编辑器PhpStrom运行缓慢问题
2017/02/21 PHP
Laravel 实现Controller向blade前台模板赋值的四种方式小结
2019/10/22 PHP
一个js封装的不错的选项卡效果代码
2008/02/15 Javascript
jquery中获得$.ajax()事件返回的值并添加事件的方法
2010/04/15 Javascript
jQuery简单实现图片预加载
2015/04/20 Javascript
信息页文内画中画广告js实现代码(文中加载广告方式)
2016/01/03 Javascript
JavaScript设计模式初探
2016/01/07 Javascript
jQuery的promise与deferred对象在异步回调中的作用
2016/05/03 Javascript
使用jQuery调用XML实现无刷新即时聊天
2016/08/07 Javascript
JS文件上传神器bootstrap fileinput详解
2021/01/28 Javascript
Jquery删除css属性的简单方法
2016/12/04 Javascript
vue.js事件处理器是什么
2017/03/20 Javascript
11行JS代码制作二维码生成功能
2018/03/09 Javascript
vue-cli2.9.3 详细教程
2018/04/23 Javascript
详解create-react-app 2.0版本如何启用装饰器语法
2018/10/23 Javascript
解决vue组件props传值对象获取不到的问题
2019/06/06 Javascript
Javascript数组方法reduce的妙用之处分享
2019/06/10 Javascript
[01:34]2014DOTA2展望TI 剑指西雅图VG战队专访
2014/06/30 DOTA
[00:32]2018DOTA2亚洲邀请赛OpTic出场
2018/04/03 DOTA
python 捕获shell脚本的输出结果实例
2017/01/04 Python
python实现大文本文件分割
2019/07/22 Python
简单了解python 生成器 列表推导式 生成器表达式
2019/08/22 Python
如何给Python代码进行加密
2020/01/10 Python
Django接收照片储存文件的实例代码
2020/03/07 Python
css3中background新增的4个新的相关属性用法介绍
2013/09/26 HTML / CSS
使用HTML5 Canvas为图片填充颜色和纹理的教程
2016/03/21 HTML / CSS
Hoka One One法国官网:美国专业跑鞋品牌
2018/12/29 全球购物
银河香水:Galaxy Perfume
2019/03/25 全球购物
澳大利亚最受欢迎的美发用品目的地:AMR
2019/08/28 全球购物
生产总经理岗位职责
2013/12/19 职场文书
SQL Server数据定义——模式与基本表操作
2021/04/05 SQL Server
python_tkinter事件类型详情
2022/03/20 Python