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下快速搭建web.py开发框架方法
Apr 22 Python
利用Python实现命令行版的火车票查看器
Aug 05 Python
对python产生随机的二维数组实例详解
Dec 13 Python
python实现随机漫步方法和原理
Jun 10 Python
python实现美团订单推送到测试环境,提供便利操作示例
Aug 09 Python
Python3 翻转二叉树的实现
Sep 30 Python
Python内置方法实现字符串的秘钥加解密(推荐)
Dec 09 Python
Python中的整除和取模实例
Jun 03 Python
Pycharm安装Qt Design快捷工具的详细教程
Nov 18 Python
python matlab库简单用法讲解
Dec 31 Python
pytorch 中nn.Dropout的使用说明
May 20 Python
Python帮你解决手机qq微信内存占用太多问题
Feb 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
雄兵连三大错觉:凯莎没了,凉冰阵亡了,华烨觉得自己又行了
2020/04/09 国漫
PHP字符过滤函数去除字符串最后一个逗号(rtrim)
2013/03/26 PHP
PHP禁止个别IP访问网站
2013/10/30 PHP
php通过两层过滤获取留言内容的方法
2016/07/11 PHP
PHP实现中国公民身份证号码有效性验证示例代码
2017/05/03 PHP
PHP htmlspecialchars() 函数实例代码及用法大全
2018/09/18 PHP
JavaScript中的事件处理
2008/01/16 Javascript
javascript arguments 传递给函数的隐含参数
2009/08/21 Javascript
js下用层来实现select的title提示属性
2010/02/23 Javascript
JSON 学习之JSON in JavaScript详细使用说明
2010/02/23 Javascript
非常强大的 jQuery.AsyncBox 弹出对话框插件
2011/08/29 Javascript
异步动态加载js与css文件的js代码
2013/09/15 Javascript
什么是Node.js?Node.js详细介绍
2014/06/01 Javascript
JavaScript中发布/订阅模式的简单实例
2014/11/05 Javascript
JS随机打乱数组的方法小结
2016/06/22 Javascript
JavaScript学习笔记整理_用于模式匹配的String方法
2016/09/19 Javascript
Bootstrap进度条学习使用
2017/02/09 Javascript
Vue+jquery实现表格指定列的文字收缩的示例代码
2018/01/09 jQuery
原生nodejs使用websocket代码分享
2018/04/07 NodeJs
使用D3.js构建实时图形的示例代码
2018/08/28 Javascript
微信小程序常用的3种提示弹窗实现详解
2019/09/19 Javascript
Vue axios 将传递的json数据转为form data的例子
2019/10/29 Javascript
微信小程序手动添加收货地址省市区联动
2020/05/18 Javascript
js实现三角形粒子运动
2020/09/22 Javascript
Django的session中对于用户验证的支持
2015/07/23 Python
使用Python向DataFrame中指定位置添加一列或多列的方法
2019/01/29 Python
Python迭代器模块itertools使用原理解析
2019/12/11 Python
python用WxPython库实现无边框窗体和透明窗体实现方法详解
2020/02/21 Python
PyQt实现计数器的方法示例
2021/01/18 Python
HTML5如何为形状图上颜色怎么绘制具有颜色和透明度的矩形
2014/06/23 HTML / CSS
基于HTML5新特性Mutation Observer实现编辑器的撤销和回退操作
2016/01/11 HTML / CSS
挪威太阳镜和眼镜网上商城:SmartBuyGlasses挪威
2016/08/20 全球购物
英国儿童设计师服装的领先零售商:Base
2019/03/17 全球购物
《金钱的魔力》教学反思
2014/02/24 职场文书
医院领导班子查摆问题对照检查材料思想汇报
2014/10/08 职场文书
文明礼貌主题班会
2015/08/14 职场文书