Python對(duì)象轉(zhuǎn)換為json的方法步驟
Python中內(nèi)置了json庫(kù),用起來(lái)超級(jí)方便,json現(xiàn)在以成為開(kāi)發(fā)的必備。
python對(duì)象到j(luò)son字符串的轉(zhuǎn)換規(guī)則:
Python | JSON |
---|---|
dict | object |
list, tuple | array |
str, unicode | string |
int, long, float | number |
True | true |
False | false |
None | null |
json字符串到python對(duì)象的轉(zhuǎn)換規(guī)則:
JSON | Python |
---|---|
object | dict |
array | list |
string | unicode |
number (int) | int, long |
number (real) | float |
true True | |
false | False |
null | None |
json的api有下面4個(gè):
- json.loads() 將json轉(zhuǎn)換為dict
- json.dumps() 將dict轉(zhuǎn)換為json
- json.load() 將json文件轉(zhuǎn)換為dict
- json.dump() 將dict轉(zhuǎn)換為json文件 person.json
注意:dict也可以是類對(duì)象
dict轉(zhuǎn)換為json
import json person = { 'name': 'jack', 'age': 15, 'email': 'jack@litets.com' } print('dict:', person) person_json = json.dumps(person) # 轉(zhuǎn)換為json print('json:', person_json)
輸出:
dict: {'name': 'jack', 'age': 15, 'email': 'jack@litets.com'}
json: {"name": "jack", "age": 15, "email": "jack@litets.com"}
json轉(zhuǎn)換為dict
import json person_dict = json.loads('{"name": "jack", "age": 15, "email": "jack@litets.com"}') print('person dict:', person_dict)
輸出:
person dict: {'name': 'jack', 'age': 15, 'email': 'jack@litets.com'}
類對(duì)象轉(zhuǎn)換為json
import json class Person: def __init__(self, name, age, email): self.name = name self.age = age self.email = email person = Person('tom', 38, 'tom@litets.com') person_json = json.dumps(person.__dict__) print('person json:', person_json)
輸出:
person json: {"name": "tom", "age": 38, "email": "tom@litets.com"}
json.dumps() 不能直接傳遞一個(gè)對(duì)象實(shí)例否則回報(bào) TypeError: Object of type Person is not JSON serializable 錯(cuò)誤 為了避免這個(gè)錯(cuò)誤,我們需要修改:
import json class Person: def __init__(self, name, age, email): self.name = name self.age = age self.email = email # 將person轉(zhuǎn)換為dict def convert2json(person): return { 'name': person.name, 'age': person.age, 'email': person.email } person = Person('tom', 38, 'tom@litets.com') # 第二個(gè)參數(shù)傳遞轉(zhuǎn)換函數(shù),或者使用default=lambda o: o.__dict__ person_json = json.dumps(person, default=convert2json) print('person json:', person_json)
json轉(zhuǎn)換為類對(duì)象
import json class Person: def __init__(self, name, age, email): self.name = name self.age = age self.email = email def convert2json(dict_json): return Person(dict_json['name'], dict_json['age'], dict_json['email']) person = json.loads('{"name": "tom", "age": 38, "email": "tom@litets.com"}', object_hook=convert2json) print('person:', person)
輸出:
person: <__main__.Person object at 0x10a7230b8>
loads函數(shù)只能將json轉(zhuǎn)換為字典,需要我們自己轉(zhuǎn)換為對(duì)象。
dict/對(duì)象轉(zhuǎn)換為json文件
import person = {"name": "tom", "age": 38, "email": "tom@litets.com"} with open('person.json', 'w') as f: json.dump(person, f)
當(dāng)前目錄下會(huì)多一個(gè)person.json文件,內(nèi)容是:
{"name": "tom", "age": 38, "email": "tom@litets.com"}
將json文件轉(zhuǎn)換為dict/對(duì)象
import json with open('person.json', 'r') as f: print(json.load(f))
輸出:
{'name': 'tom', 'age': 38, 'email': 'tom@litets.com'}
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
nlp自然語(yǔ)言處理基于SVD的降維優(yōu)化學(xué)習(xí)
這篇文章主要為大家介紹了nlp自然語(yǔ)言處理基于SVD的降維優(yōu)化學(xué)習(xí),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪2022-04-04python簡(jiǎn)單實(shí)現(xiàn)旋轉(zhuǎn)圖片的方法
這篇文章主要介紹了python簡(jiǎn)單實(shí)現(xiàn)旋轉(zhuǎn)圖片的方法,涉及Python中image模塊使用技巧,需要的朋友可以參考下2015-05-05Python實(shí)現(xiàn)監(jiān)聽(tīng)目錄并取消文件只讀屬性
這篇文章主要為大家詳細(xì)介紹了如何利用Python實(shí)現(xiàn)監(jiān)聽(tīng)目錄并取消文件只讀屬性,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-07-07YOLOv5在圖片上顯示統(tǒng)計(jì)出單一檢測(cè)目標(biāo)的個(gè)數(shù)實(shí)例代碼
各位讀者首先要認(rèn)識(shí)到的問(wèn)題是,在YOLOv5中完成錨框計(jì)數(shù)是一件非常簡(jiǎn)單的工作,下面這篇文章主要給大家介紹了關(guān)于YOLOv5如何在圖片上顯示統(tǒng)計(jì)出單一檢測(cè)目標(biāo)的個(gè)數(shù)的相關(guān)資料,需要的朋友可以參考下2023-03-03一文教會(huì)你調(diào)整Matplotlib子圖的大小
Matplotlib的可以把很多張圖畫(huà)到一個(gè)顯示界面,這就設(shè)計(jì)到面板切分成一個(gè)一個(gè)子圖,下面這篇文章主要給大家介紹了關(guān)于調(diào)整Matplotlib子圖大小的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-06-06Python中使用字典對(duì)列表中的元素進(jìn)行計(jì)數(shù)的幾種方式
本文主要介紹了Python中使用字典對(duì)列表中的元素進(jìn)行計(jì)數(shù),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2024-06-06對(duì)pandas的行列名更改與數(shù)據(jù)選擇詳解
今天小編就為大家分享一篇對(duì)pandas的行列名更改與數(shù)據(jù)選擇詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-11-11