python-json數據轉換為python數據


 
        

JSON對象與Python字典的區別#

 
        

JSON對象是javascript object即javascript中的對象,是一種通用的格式,格式嚴格,不支持備注。

 
        

JSON文本和JSON對象的區別:

 
        
  • JSON文本是符合JSON格式的文本,實際上是一個字符串
  • JSON對象是內存中一個對象,擁有屬性和方法,可以通過對象獲取其中的參數信息
 
        

Python中我們一般提到JSON對象指的是字典

 
        

Python的字典的格式和JSON格式,稍有不同:

 
        
  • 字典中的引號支持單引號和雙引號,JSON格式只支持雙引號
  • 字典中的True/False首字母大寫,JSON格式為true/false
  • 字典中的空值為None, JSON格式為null

'''

json 是數據存儲和交換文本信息的語法
javaScript對象表示法

用於數據傳遞

json中的數據格式 python中的數據
數字 整型 浮點數
字符串 字符串
布爾值 true false True False
數組 列表。元祖
對象 字典
null None
常見的json數據格式
{
code:200,
values:[
{"name":'lal','age':20}]
}
{} josn數據對應json對象
[] josn數組
'''

 1 import json
 2 age = 10
 3 #dumps把數據轉化為json語法中的數值數據
 4 json_data = json.dumps(age)
 5 print(json_data)
 6 
 7 name = '橙子'
 8 json_dta =json.dumps(name)
 9 print(json_data)
10 
11 person ={"chinese":99}
12 json_data =json.dumps(person)
13 print(json_data)
14 
15 
16 
17 #在python中可自定義類型 自定義的類型 在json中沒有對應的數據格式
18 #需要制定編碼規則 通過編碼規則 將自定義類型的數據轉換為json可識別的數據
19 class Person():
20     def __init__(self,name):
21         self.name = name
22     def __str__(self):
23         return f"Person(name={self.name})"
24     #__repr__通過容器調用對象調用__repr__
25     #__str__當打印對象時輸出設定的格式信息
26     __repr__ =__str__
27 
28 p = Person("橙子")
29 print(p)
30 print(type(p))#<class '__main__.Person'>
31 #在json中無對應數據
32 
33 #存儲Person類型的數據-需獲取json可識別數據格式
34 #方式1
35 #對象__dict__獲取對象的特征信息以字典形式存儲
36 json_data = json.dumps(p.__dict__)
37 print(json_data)#{"name": "\u6a59\u5b50"}
38 #本質上存儲的是字典
39 
40 #loads解析為json數據
41 python_data =json.loads(json_data)
42 print(python_data)
43 
44 #對應對象為Person對象 需要根據數據信息創建對象
45 p = Person(python_data["name"])
46 print(p,type(p))#Person(name=橙子) <class '__main__.Person'>
47 
48 #方法二存儲時設置編碼規則 存的是指定的編碼規則數據
49 #獲取的時候要對應有一個解碼規則 在根據數據解析成對象
50 #對以上操作封裝
51 #PersonEncoder編碼
52 class PersonEncoder(json.JSONEncoder):
53     #重寫方法
54     #這個方法在dumps時 內部自動調用
55     #子類重寫父類的方法 子類對黨調用時 只能調用重寫 因為會吧父類方法覆蓋
56     def default(self, o):
57         #把規則寫出來
58         #o  表示要進行json轉換的對象
59         return o.__dict__
60 P =Person('橙子2')
61 #CLS制定編碼規則
62 #對象__dict__獲取對象的特征信息以字典形式存儲
63 json_data =json.dumps(P,cls=PersonEncoder)
64 print(json_data)#{"name": "\u6a59\u5b502"}
65 
66 #解析JSONDecoder
67 class PersonDecoder(json.JSONDecoder):
68     def __init__(self):
69         #指定解碼規則
70         #object_hook對象掛鈎-對象解析-接受的是一個函數
71         super().__init__(object_hook=self.to_python_obj)
72 
73     def to_python_obj(self,d):
74         #d接受的是字典,當前制定的轉化為json對象的數據格式
75        return Person(d['name'])
76 
77 #解析操作
78 python_data =json.loads(json_data,cls=PersonDecoder)
79 print(python_data)#Person(name=橙子2)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM