json物件是j**ascript object即j**ascript中的物件,是一種通用的格式,格式嚴格,不支援備註。
json文字和json物件的區別:
python中我們一般提到json物件指的是字典
python的字典的格式和json格式,稍有不同:
json 是資料儲存和交換文字資訊的語法
j**ascript物件表示法
用於資料傳遞
json中的資料格式 python中的資料
數字 整型 浮點數
字串 字串
布林值 true false true false
陣列 列表。元祖
物件 字典
null none
常見的json資料格式
]}{} josn資料對應json物件
josn陣列
**如下
import json
age = 10
#dumps把資料轉化為json語法中的數值資料
json_data = json.dumps(age)
print(json_data)
name = '橙子'
json_dta =json.dumps(name)
print(json_data)
person =
json_data =json.dumps(person)
print(json_data)
#在python中可自定義型別 自定義的型別 在json中沒有對應的資料格式
#需要制定編碼規則 通過編碼規則 將自定義型別的資料轉換為json可識別的資料
class person():
def __init__(self,name):
self.name = name
def __str__(self):
return f"person(name=)"
#__repr__通過容器呼叫物件呼叫__repr__
#__str__當列印物件時輸出設定的格式資訊
__repr__ =__str__
p = person("橙子")
print(p)
print(type(p))#
#在json中無對應資料
#儲存person型別的資料-需獲取json可識別資料格式
#方式1
#物件__dict__獲取物件的特徵資訊以字典形式儲存
json_data = json.dumps(p.__dict__)
print(www.cppcns.comjson_data)#
#本質上儲存的是字典
#loads解析為json資料
python_data =json.loads(json_data)
print(python_data)
#對應物件為person物件 需要根據資料資訊建立物件
p = person(python_data["name"])
print(p,type(p))#person(name=橙子)
#方法二儲存時設定編碼規則 存的是指定的編碼規則資料
#獲取的時候要對應有乙個解碼規則 在根據資料解析成物件
#對以上操作封裝
#personencodewww.cppcns.comr編碼
class personencoder(json.jsonencoder):
#重寫方法
#這個方法在dumps時 內部自動呼叫
#子類重寫父類的方法 子類對黨呼叫時 只能呼叫重寫 因為會吧父類方法覆蓋
def default(self, o):
#把規則寫出來
#o 表示要進行json轉換的物件
return o.__dict__
p =person('橙子2')
#cls制定編碼規則
#物件__dict__獲取物件的特徵資訊以字典形式儲存
json_data =json.dumps(p,cls=personencoder)
print(json_data)#
#解析jsondecoder
class persondecoder(json.jsondecoder):
def __init__(self):
#指定解碼規則
#object_hook物件掛鉤-物件解析-接受的是乙個函式
super().__init__(object_hook=self.to_python_obj)
def to_python_obj(self,d):
#d接受的是字典,當前制定的轉化為json物件的資料格式
return person(d['name'])
#解析操作
python_data =json.loads(json_data,cls=persondecoder)
print(python_data)#person(name=橙子2)
本文標題: 如何將json資料轉換為python資料
本文位址:
如何將json轉換為陣列
今天大年初一,首先希望看到這篇文章的所有人2018年順順利利,公升職加薪。話說過年這幾天好無聊啊,每天就是吃吃吃,因為我太宅了,初來廣東也沒有好好出去玩一玩,馬上春節小長假就結束了,還是從床上爬起來擼 比較有意義。新的一年要加油了,要更加努力,活出自己想要的人生!up up up 以上都是沒有意義的...
如何將C nullable int轉換為int
如何將可空int轉換為int 假設我有兩種型別的int,如下所示 int?v1 intv2 將v1的值分配給v2 v2 v1 會導致錯誤。如何將v1轉換為v2?v2 convert.toint32 v1 v2 int v1 檢索物件的值。如果為null,則返回int的預設值,即0。v2 v1.get...
如何將float轉換為string ZZ
可能有好多人,包括c語言老手都不知道如何將float資料轉換為string,我就是這樣,今天查了一下msdn,才知道c提供了 gcvt函式實現這個功能,收穫著實不小,為了方便自己查詢,也為了那些像我這樣的能夠了解該函式的具體用法,我把msdn的原文原封不動抄錄如下 gcvt converts a f...