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程序设计入门(5)类的使用简介
Jun 16 Python
Python json模块使用实例
Apr 11 Python
Python常见异常分类与处理方法
Jun 04 Python
Python使用Turtle模块绘制五星红旗代码示例
Dec 11 Python
2018年Python值得关注的开源库、工具和开发者(总结篇)
Jan 04 Python
详解python中asyncio模块
Mar 03 Python
Django 实现前端图片压缩功能的方法
Aug 07 Python
pandas条件组合筛选和按范围筛选的示例代码
Aug 26 Python
Django使用中间件解决前后端同源策略问题
Sep 02 Python
python数据分析工具之 matplotlib详解
Apr 09 Python
python中如何写类
Jun 29 Python
Python Pygame实现俄罗斯方块
Feb 19 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
解析左右值无限分类的实现算法
2013/06/20 PHP
php与flash as3 socket通信传送文件实现代码
2014/08/16 PHP
PHP设计模式之适配器模式代码实例
2015/05/11 PHP
PHP的mysqli_stat()函数讲解
2019/01/23 PHP
jQuery参数列表集合
2011/04/06 Javascript
详解javascript new的运行机制
2016/01/26 Javascript
jQuery插件Validation快速完成表单验证的方式
2016/07/28 Javascript
JavaScript中捕获/阻止捕获、冒泡/阻止冒泡方法
2016/12/07 Javascript
Vue.js如何实现路由懒加载浅析
2017/08/14 Javascript
老生常谈JavaScript面向对象基础与this指向问题
2017/10/16 Javascript
JS基于贪心算法解决背包问题示例
2017/11/27 Javascript
jQuery实现左右两个列表框的内容相互移动功能示例
2019/01/27 jQuery
vue-router 起步步骤详解
2019/03/26 Javascript
微信小程序实现的绘制table表格功能示例
2019/04/26 Javascript
一文了解Vue中的nextTick
2019/05/06 Javascript
jQuery实现每日秒杀商品倒计时功能
2019/09/06 jQuery
解决layer弹出层msg的文字不显示的问题
2019/09/11 Javascript
Layui动态生成select下拉选择框不显示的解决方法
2019/09/24 Javascript
Layui 解决表格异步调用后台分页的问题
2019/10/26 Javascript
vue 动态组件用法示例小结
2020/03/06 Javascript
详解Vue3.0 + TypeScript + Vite初体验
2021/02/22 Vue.js
Python常用库推荐
2016/12/04 Python
python去掉行尾的换行符方法
2017/01/04 Python
Python爬虫天气预报实例详解(小白入门)
2018/01/24 Python
Python Django框架url反向解析实现动态生成对应的url链接示例
2019/10/18 Python
python绘制随机网络图形示例
2019/11/21 Python
python GUI库图形界面开发之PyQt5信号与槽基本操作
2020/02/25 Python
PyCharm2019 安装和配置教程详解附激活码
2020/07/31 Python
python 实现单例模式的5种方法
2020/09/23 Python
Python confluent kafka客户端配置kerberos认证流程详解
2020/10/12 Python
三八妇女节活动总结
2014/05/04 职场文书
教师批评与自我批评发言稿
2014/10/15 职场文书
2014年财政局工作总结
2014/12/09 职场文书
2015年社区中秋节活动总结
2015/03/23 职场文书
新学期新寄语,献给新生们!
2019/11/15 职场文书
python实现简单的井字棋
2021/05/26 Python