json数据转换为python数据

2021-04-01 12:25

阅读:724

标签:col   als   类型   规则   rip   div   应对   格式   指定   

‘‘‘
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))#
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=橙子) 
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)

 

json数据转换为python数据

标签:col   als   类型   规则   rip   div   应对   格式   指定   

原文地址:https://www.cnblogs.com/cheng10/p/13534074.html


评论


亲,登录后才可以留言!