Python 之 Json序列化嵌套類方式
想要用python自已手動(dòng)序列化嵌套類,就要明白兩個(gè)問題:
1.Json是什么?
2.Json支持什么類型?
答案顯而易見
Json就是嵌套對象
Json在python中支持列表,字典(當(dāng)然也支持int,string.....,不過說這個(gè)也沒多大必要)
很好,等等,列表,字典?我們在python中學(xué)過列表,字典,字典列表,列表字典,字典字典,那,我們可不可以把類對象轉(zhuǎn)化為這些呢?
我可以很確定的告訴你,可以,并且,嵌套類都可以!??!
下面就來實(shí)戰(zhàn):
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)
執(zhí)行效果:
很多人會說,第五種才是我想要的,前面四種不是標(biāo)準(zhǔn)的json數(shù)據(jù),剛開始確實(shí)是這樣認(rèn)為的,但是。。。
1.如果你處理的兩個(gè)嵌套類是數(shù)據(jù)庫的呢?假比如一對多的關(guān)系型數(shù)據(jù)庫,method3不是一個(gè)很好的選擇么?
2.如果你處理的兩個(gè)嵌套類是包含關(guān)系呢?method2不是一個(gè)很好的選擇么?
以上這篇Python 之 Json序列化嵌套類方式就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
python PIL中ImageFilter模塊圖片濾波處理和使用方法
這篇文章主要介紹PIL中ImageFilter模塊幾種圖片濾波處理和使用方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-11-11Python實(shí)現(xiàn)的掃碼工具居然這么好用!
二維碼作為一種信息傳遞的工具在當(dāng)今社會發(fā)揮了重要作用.從手機(jī)用戶登錄到手機(jī)支付,生活的各個(gè)角落都能看到二維碼的存在.那你知道二維碼是怎么解析的嗎?有想過自己實(shí)現(xiàn)一個(gè)掃碼工具嗎?如果想的話就繼續(xù)看下去吧!需要的朋友可以參考下2021-06-06ubuntu安裝jupyter并設(shè)置遠(yuǎn)程訪問的實(shí)現(xiàn)
Jupyter?Notebook是Ipython的升級版,而Ipython可以說是一個(gè)加強(qiáng)版的交互式Shell,本文主要介紹了ubuntu安裝jupyter并設(shè)置遠(yuǎn)程訪問的實(shí)現(xiàn),感興趣的可以了解一下2022-03-03基于Python實(shí)現(xiàn)一個(gè)簡單的銀行轉(zhuǎn)賬操作
這篇文章主要介紹了基于Python實(shí)現(xiàn)一個(gè)簡單的銀行轉(zhuǎn)賬操作的相關(guān)資料,需要的朋友可以參考下2016-03-03python 動(dòng)態(tài)加載的實(shí)現(xiàn)方法
腳本語言都有一個(gè)優(yōu)點(diǎn),就是動(dòng)態(tài)加載,python也有這個(gè)特性。這篇文章主要介紹了python 動(dòng)態(tài)加載的實(shí)現(xiàn)方法,需要的朋友可以參考下2017-12-12Numpy中ndim、shape、dtype、astype的用法詳解
這篇文章主要介紹了Numpy中ndim、shape、dtype、astype的用法詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-06-06python通過elixir包操作mysql數(shù)據(jù)庫實(shí)例代碼
這篇文章主要介紹了python通過elixir包操作mysql數(shù)據(jù)庫,分享了相關(guān)代碼示例,小編覺得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下2018-01-01Python OpenCV 針對圖像細(xì)節(jié)的不同操作技巧
這篇文章主要介紹了Python OpenCV 針對圖像細(xì)節(jié)的不同操作,包括圖像像素的說明,圖像屬性信息的獲取與修改以及圖像通道的知識(包括拆分通道和合并通道),需要的朋友可以參考下2021-08-08