Python 之 Json序列化嵌套类方式


Posted in Python onFebruary 27, 2020

想要用python自已手动序列化嵌套类,就要明白两个问题:

1.Json是什么?

2.Json支持什么类型?

答案显而易见

Json就是嵌套对象

Json在python中支持列表,字典(当然也支持int,string.....,不过说这个也没多大必要)

很好,等等,列表,字典?我们在python中学过列表,字典,字典列表,列表字典,字典字典,那,我们可不可以把类对象转化为这些呢?

我可以很确定的告诉你,可以,并且,嵌套类都可以!!!

下面就来实战:

from flask import Flask
import json
 
app = Flask(__name__)
 
class City():
  def __init__(self,country,provider):
    self.country = country
    self.provider = provider
 
 
class School():
  def __init__(self,country,provider,name,nums):
    self.city = City(country,provider)
    self.name = name
    self.nums = nums
 
 
@app.route('/method0')
def method0():
  school = School('china','shanxi','wutaizhongxue','2000')
 
  s_temp0 = [school.city.country,school.city.provider,school.name,school.nums]
  return json.dumps(s_temp0)
 
 
@app.route('/method1')
def method1():
  school = School('china','shanxi','wutaizhongxue','2000')
 
  s_temp1 = {'country':school.city.country,'provider':school.city.provider,'name':school.name,'nums':school.nums}
  return json.dumps(s_temp1)
 
 
@app.route('/method2')
def method2():
  school = School('china','shanxi','wutaizhongxue','2000')
 
  s_temp2 = [{'country':school.city.country,'provider':school.city.provider},school.name,school.nums]
  return json.dumps(s_temp2)
 
 
@app.route('/method3')
def method3():
  school = School('china','shanxi','wutaizhongxue','2000')
 
  s_temp3 = {'city':[school.city.country,school.city.provider],'name':school.name,'nums':school.nums}
  return json.dumps(s_temp3)
 
 
@app.route('/method4')
def method4():
  school = School('china','shanxi','wutaizhongxue','2000')
 
  s_temp4 = {'city':{'country':school.city.country,'provider':school.city.provider},'name':school.name,'nums':school.nums}
  return json.dumps(s_temp4)
 
 
if __name__ == '__main__':
  app.run(debug=True)

执行效果:

Python 之 Json序列化嵌套类方式

Python 之 Json序列化嵌套类方式

Python 之 Json序列化嵌套类方式

Python 之 Json序列化嵌套类方式

Python 之 Json序列化嵌套类方式

很多人会说,第五种才是我想要的,前面四种不是标准的json数据,刚开始确实是这样认为的,但是。。。

1.如果你处理的两个嵌套类是数据库的呢?假比如一对多的关系型数据库,method3不是一个很好的选择么?

2.如果你处理的两个嵌套类是包含关系呢?method2不是一个很好的选择么?

以上这篇Python 之 Json序列化嵌套类方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
在类Unix系统上开始Python3编程入门
Aug 20 Python
Python中MySQLdb和torndb模块对MySQL的断连问题处理
Nov 09 Python
浅谈Python的异常处理
Jun 19 Python
python中通过预先编译正则表达式提高效率
Sep 25 Python
python使用socket创建tcp服务器和客户端
Apr 12 Python
python bmp转换为jpg 并删除原图的方法
Oct 25 Python
对python For 循环的三种遍历方式解析
Feb 01 Python
详解Python:面向对象编程
Apr 10 Python
tensorflow之获取tensor的shape作为max_pool的ksize实例
Jan 04 Python
基于Pycharm加载多个项目过程图解
Jan 19 Python
Python暴力破解Mysql数据的示例
Nov 09 Python
详解Python中如何将数据存储为json格式的文件
Nov 18 Python
python GUI库图形界面开发之PyQt5访问系统剪切板QClipboard类详细使用方法与实例
Feb 27 #Python
python GUI库图形界面开发之PyQt5控件数据拖曳Drag与Drop详细使用方法与实例
Feb 27 #Python
python脚本实现mp4中的音频提取并保存在原目录
Feb 27 #Python
python列表切片和嵌套列表取值操作详解
Feb 27 #Python
Python递归实现打印多重列表代码
Feb 27 #Python
Python各种扩展名区别点整理
Feb 27 #Python
python GUI库图形界面开发之PyQt5图片显示控件QPixmap详细使用方法与实例
Feb 27 #Python
You might like
main.php
2006/12/09 PHP
PHP 中执行排序与 MySQL 中排序
2009/04/21 PHP
通用PHP动态生成静态HTML网页的代码
2010/03/04 PHP
Yii快速入门经典教程
2015/12/28 PHP
PHP的Yii框架中过滤器相关的使用总结
2016/03/29 PHP
javascript不同类型数据之间的运算的转换方法
2014/02/13 Javascript
用JavaScript实现使用鼠标画线的示例代码
2014/08/19 Javascript
js继承call()和apply()方法总结
2014/12/08 Javascript
jQuery数据类型小结(14个)
2016/01/08 Javascript
javascript图片切换综合实例(循环切换、顺序切换)
2016/01/13 Javascript
Jquery和angularjs获取check框选中的值的方法汇总
2016/01/17 Javascript
基于JavaScript实现轮播图代码
2016/07/14 Javascript
jQuery实现的无缝广告图片左右滚动功能详解
2016/12/24 Javascript
Bootstrap table 定制提示语的加载过程
2017/02/20 Javascript
简单实现js上传文件功能
2017/08/21 Javascript
JavaScript框架Angular和React深度对比
2017/11/20 Javascript
使用bootstrap实现下拉框搜索功能的实例讲解
2018/08/10 Javascript
基于vue循环列表时点击跳转页面的方法
2018/08/31 Javascript
关于JS模块化的知识点分享
2019/10/16 Javascript
python利用elaphe制作二维条形码实现代码
2012/05/25 Python
Python中计算三角函数之cos()方法的使用简介
2015/05/15 Python
python避免死锁方法实例分析
2015/06/04 Python
Python实现比较两个文件夹中代码变化的方法
2015/07/10 Python
Django实现分页功能
2018/07/02 Python
Windows下Anaconda2安装NLTK教程
2018/09/19 Python
Python判断以什么结尾以什么开头的实例
2018/10/27 Python
python实现五子棋人机对战游戏
2020/03/25 Python
python pyenv多版本管理工具的使用
2019/12/23 Python
python绘图pyecharts+pandas的使用详解
2020/12/13 Python
Python绘制数码晶体管日期
2021/02/19 Python
socket.io 和canvas 实现的共享画板功能
2019/05/22 HTML / CSS
HTML5 新事件 小结
2009/07/16 HTML / CSS
德国购买门票网站:ADticket.de
2019/10/31 全球购物
C语言中一个结构不能包含指向自己的指针吗
2012/05/25 面试题
教师职位说明书
2014/07/29 职场文书
初中生旷课检讨书范文
2014/10/06 职场文书