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实现下载网易云音乐的高清MV
Mar 16 Python
python绘制立方体的方法
Jul 02 Python
纯用NumPy实现神经网络的示例代码
Oct 24 Python
使用python3实现操作串口详解
Jan 01 Python
Python OpenCV利用笔记本摄像头实现人脸检测
Aug 20 Python
TensorFlow实现简单的CNN的方法
Jul 18 Python
django框架模板语言使用方法详解
Jul 18 Python
Python如何使用k-means方法将列表中相似的句子归类
Aug 08 Python
Django配置文件代码说明
Dec 04 Python
解决pycharm中导入自己写的.py函数出错问题
Feb 12 Python
浅谈python多线程和多线程变量共享问题介绍
Apr 17 Python
Pytorch1.5.1版本安装的方法步骤
Dec 31 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与SQL注入攻击[二]
2007/04/17 PHP
php实现的替换敏感字符串类实例
2014/09/22 PHP
详解Laravel设置多态关系模型别名的方式
2019/10/17 PHP
ArrayList类(增强版)
2007/04/04 Javascript
return false,对阻止事件默认动作的一些测试代码
2010/11/17 Javascript
ajax中get和post的说明及使用与区别
2012/12/23 Javascript
jQuery事件绑定.on()简要概述及应用
2013/02/07 Javascript
点击按钮自动加关注的代码(sina微博/QQ空间/人人网/腾讯微博)
2014/01/02 Javascript
node.js中的fs.readdirSync方法使用说明
2014/12/17 Javascript
jQuery仿360导航页图标拖动排序效果代码分享
2015/08/24 Javascript
js实现类似菜单风格的TAB选项卡效果代码
2015/08/28 Javascript
JS简单实现String转Date的方法
2016/03/02 Javascript
jQuery Tags Input Plugin(添加/删除标签插件)详解
2016/06/20 Javascript
关于JavaScript 原型链的一点个人理解
2016/07/31 Javascript
Form表单按回车自动提交表单的实现方法
2016/11/18 Javascript
使用JS模拟锚点跳转的实例
2018/02/01 Javascript
简单两步使用node发送qq邮件的方法
2019/03/01 Javascript
Node.js在图片模板上生成二维码图片并附带底部文字说明实现详解
2019/08/07 Javascript
小程序实现录音上传功能
2019/11/22 Javascript
vue+vant使用图片预览功能ImagePreview的问题解决
2020/04/10 Javascript
[49:11]完美世界DOTA2联赛PWL S3 INK ICE vs DLG 第二场 12.20
2020/12/23 DOTA
详解Python字符串对象的实现
2015/12/24 Python
Android基于TCP和URL协议的网络编程示例【附demo源码下载】
2018/01/23 Python
人生苦短我用python python如何快速入门?
2018/03/12 Python
python中单例常用的几种实现方法总结
2018/10/13 Python
python利用Tesseract识别验证码的方法示例
2019/01/21 Python
Flask框架模板渲染操作简单示例
2019/07/31 Python
Python手绘可视化工具cutecharts使用实例
2019/12/05 Python
Django-xadmin后台导入json数据及后台显示信息图标和主题更改方式
2020/03/11 Python
CSS3中的常用选择器使用示例整理
2016/06/13 HTML / CSS
StubHub智利:购买和出售您的门票
2016/11/23 全球购物
skyn ICELAND官网:冰岛成分天然护肤品
2020/08/24 全球购物
2015年大学班长个人工作总结
2015/04/24 职场文书
管理者们如何制定2019年的工作计划?
2019/07/01 职场文书
Python安装及建立虚拟环境的完整步骤
2022/06/25 Servers
基于redis+lua进行限流的方法
2022/07/23 Redis