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也可以是類(lèi)對(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'}
類(lèi)對(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)換為類(lèi)對(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í)有所幫助,也希望大家多多支持腳本之家。
- python中將字典轉(zhuǎn)換成其json字符串
- python將字符串轉(zhuǎn)換成json的方法小結(jié)
- python 對(duì)象和json互相轉(zhuǎn)換方法
- python實(shí)現(xiàn)class對(duì)象轉(zhuǎn)換成json/字典的方法
- 基于python實(shí)現(xiàn)把json數(shù)據(jù)轉(zhuǎn)換成Excel表格
- Python中xml和json格式相互轉(zhuǎn)換操作示例
- Python實(shí)現(xiàn)把json格式轉(zhuǎn)換成文本或sql文件
- 使用python把json文件轉(zhuǎn)換為csv文件
- 使用python將mysql數(shù)據(jù)庫(kù)的數(shù)據(jù)轉(zhuǎn)換為json數(shù)據(jù)的方法
- Python中Json和其他類(lèi)型相互轉(zhuǎn)換的實(shí)現(xiàn)示例
相關(guān)文章
pytorch 使用單個(gè)GPU與多個(gè)GPU進(jìn)行訓(xùn)練與測(cè)試的方法
今天小編就為大家分享一篇pytorch 使用單個(gè)GPU與多個(gè)GPU進(jìn)行訓(xùn)練與測(cè)試的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-08-08
淺談keras.callbacks設(shè)置模型保存策略
這篇文章主要介紹了淺談keras.callbacks設(shè)置模型保存策略,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-06-06
python爬蟲(chóng)庫(kù)scrapy簡(jiǎn)單使用實(shí)例詳解
這篇文章主要介紹了python爬蟲(chóng)庫(kù)scrapy簡(jiǎn)單使用實(shí)例詳解,需要的朋友可以參考下2020-02-02
Python使用watchfiles實(shí)現(xiàn)監(jiān)控目錄變更
在工作中難免會(huì)碰到這樣的需求,監(jiān)控指定目錄,下面小編就來(lái)和大家介紹一下如何利用watchfiles 模塊實(shí)現(xiàn)監(jiān)控目錄的變更,感興趣的可以了解下2023-09-09
基于循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)實(shí)現(xiàn)影評(píng)情感分類(lèi)
這篇文章主要為大家詳細(xì)介紹了基于循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)實(shí)現(xiàn)影評(píng)情感分類(lèi),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-03-03
python實(shí)現(xiàn)apahce網(wǎng)站日志分析示例
這篇文章主要介紹了python實(shí)現(xiàn)apahce網(wǎng)站日志分析示例,需要的朋友可以參考下2014-04-04
Python?Poetrya項(xiàng)目依賴(lài)管理安裝使用詳解
這篇文章主要為大家介紹了Python?Poetrya項(xiàng)目依賴(lài)管理安裝使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-11-11

