• 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": "u6a59u5b50"}
    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": "u6a59u5b502"}
    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)
  • 相关阅读:
    图片的使用
    对话框
    窗体
    浏览器与android移动端视频互播技术实现
    Arcengine实现创建网络数据集札记(三)
    Arcengine实现创建网络数据集札记(二)
    Arcengine实现创建网络数据集札记(一)
    2019年年初iOS招人心得笔记(附面试题)
    2019年,200道面试题打造最受企业欢迎的iOS程序猿!
    BAT面试总结——iOS开发高级工程师
  • 原文地址:https://www.cnblogs.com/cheng10/p/13534074.html
Copyright © 2020-2023  润新知