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多线程编程(六):可重入锁RLock
Apr 05 Python
用Python程序抓取网页的HTML信息的一个小实例
May 02 Python
Python脚本实现虾米网签到功能
Apr 12 Python
python中的常量和变量代码详解
Jul 25 Python
Python开发最牛逼的IDE——pycharm
Aug 01 Python
解决使用export_graphviz可视化树报错的问题
Aug 09 Python
基于Python实现大文件分割和命名脚本过程解析
Sep 29 Python
Python3打包exe代码2种方法实例解析
Feb 17 Python
python实现输入三角形边长自动作图求面积案例
Apr 12 Python
基于jupyter代码无法在pycharm中运行的解决方法
Apr 21 Python
浅析python 动态库m.so.1.0错误问题
May 09 Python
Python字符串对齐方法使用(ljust()、rjust()和center())
Apr 26 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
ADODB的数据库封包程序库
2006/12/31 PHP
Windows下的PHP安装pear教程
2014/10/24 PHP
使用xampp搭建运行php虚拟主机的详细步骤
2015/10/21 PHP
php5对象复制、clone、浅复制与深复制实例详解
2019/08/14 PHP
TP5框架安全机制实例分析
2020/04/05 PHP
Cookie跨域问题解决方案代码示例
2020/11/24 PHP
在Javascript里访问SharePoint列表数据的实现方法
2011/05/22 Javascript
php中给js数组赋值方法
2014/03/10 Javascript
百度移动版的url编码解码示例
2014/04/29 Javascript
js构造函数、索引数组和属性的实现方式和使用
2014/11/16 Javascript
JavaScript的原型继承详解
2015/02/15 Javascript
jQuery对象和DOM对象之间相互转换的方法介绍
2015/02/28 Javascript
Javascript中的数组常用方法解析
2016/06/17 Javascript
JS中Json数据的处理和解析JSON数据的方法详解
2016/06/29 Javascript
Vue.js组件tab实现选项卡切换
2020/03/23 Javascript
Vue2组件tree实现无限级树形菜单
2017/03/29 Javascript
NodeJs实现定时任务的示例代码
2017/12/05 NodeJs
jackson解析json字符串,首字母大写会自动转为小写的方法
2017/12/22 Javascript
Vue.directive使用注意(小结)
2018/08/31 Javascript
快速解决vue动态绑定多个class的官方实例语法无效的问题
2018/09/05 Javascript
JS/HTML5游戏常用算法之追踪算法实例详解
2018/12/12 Javascript
JS实现根据详细地址获取经纬度功能示例
2019/04/16 Javascript
在Python中操作字符串之replace()方法的使用
2015/05/19 Python
python实现的多线程端口扫描功能示例
2017/01/21 Python
python实现图片筛选程序
2018/10/24 Python
在python3中pyqt5和mayavi不兼容问题的解决方法
2019/01/08 Python
python3.8与pyinstaller冲突问题的快速解决方法
2020/01/16 Python
伦敦眼门票在线预订:London Eye
2018/05/31 全球购物
20世纪40年代连衣裙和复古服装:The Seamstress Of Bloomsbury
2018/07/24 全球购物
字符串str除首尾字符外的其他字符按升序排列
2013/03/08 面试题
国际金融专业自荐信
2014/07/05 职场文书
邻里守望志愿服务活动方案
2014/08/15 职场文书
四风问题对照检查材料
2014/09/22 职场文书
描述鲁迅的名言整理,一生受用
2019/08/08 职场文书
ES6 解构赋值的原理及运用
2021/05/25 Javascript
SpringBoot接入钉钉自定义机器人预警通知
2022/07/15 Java/Android