zoukankan      html  css  js  c++  java
  • python的json用法

    一、json是什么

      客户端向服务器端发送请求后,服务器端怎么才能把用户需要的数据返回给客户端呢。这时我们就需要用一个指定的格式将数据,按照指定格式返回客户端。这时就有了两种数据传输的方式(XMLJson

      常用的是Json,因为在普通的Web应用中,不管是服务器端还是客户端解析XML代码会非常麻烦,所以这时Json就更加满足数据传输解析的要求。采用Json格式的方式进行数据的传输,不仅方便传输解析,还特别易于人阅读和编写。

    打个形象的比方,后端好比是厨师,厨师做好菜,盛到盘子(json)中,交给顾客(前段)。盘子在这个过程中起到了一个交换的容器的作用。

      导入:

    import  json
    print(json.__all__)

      主要方法:

    ['dump', 'dumps', 'load', 'loads', 'JSONDecoder', 'JSONEncoder']

    二.XML与Json转换:

    1.常规转换:

    <emp>
        <name>fxhl</name>
        <city>深圳</city>
        <age>23</age>
    </emp>

    转换为Json为:

      {“name”:“fxhl”,"city":"深圳","age":23}

    三、json和python中字典的区别和联系

    刚开始学习json时感觉和python中的字典很像,两者还是有不小的区别的。

    字典:{‘username’:‘wmh’,‘score’:[10,20,30],'a':999}

    可以增删改查,单双都可以,是一种数据类型,有内置方法。

    json:{
    
        "studentInfo":
        {
            "id":123456,
            "stu_name":"Dorra"
        }
    }

    必须使用双引号或值得边界符号,不能使用单引号是一种数据格式,较少的操作方式,多用于数据传输和存储。

    它们的共同点:都是key和values形式

    四、python中json序列化和反序列化

      在python中,序列化可以理解为:把python的对象编码转换为json格式的字符串,

    反序列化可以理解为:把json格式字符串解码为python数据对象。在python的标准库中,专门提供了json库与pickle库来处理这部分。

      json的dumps方法和loads方法,可实现数据的序列化和反序列化。具体来说, dumps方法,可将json格式数据序列为Python的相关的数据类型; loads方法则是相反,把python数据类型转换为json相应的数据类型格式要求。在序列化时,中文汉字总是被转换为unicode码,在dumps函数中添加参数ensure_ascii=False即可解决。

    序列化

    1 #coding: utf-8
     2 import json
     3 
     4 dict = {'name':'wmh', 'age':18, 'hobby':'听音乐'}
     5 print('未序列化前的数据类型为:', type(dict))
     6 print('为序列化前的数据:', dict)
     7 #对dict进行序列化的处理
     8 dict_xu = json.dumps(dict,ensure_ascii=False)    #添加ensure_ascii=False进行序列化
     9 print('序列化后的数据类型为:', type(dict_xu))
    10 print('序列化后的数据为:', dict_xu)
    11 -------------------------------------------------------------------
    12 未序列化前的数据类型为: <class 'dict'>
    13 为序列化前的数据: {'hobby': '听音乐', 'age': 18, 'name': 'wmh'}
    14 序列化后的数据类型为: <class 'str'>
    15 序列化后的数据为: {"hobby": "听音乐", "age": 18, "name": "wmh"}

    反序列化

    import  json
    
    dict1={'name':'雷子','age':24,'address':'北京'}
    
    print (u'未序列化前的数据类型为:',type(dict1))
    print (u'未序列化前的数据:',dict1)
    #对dict1进行序列化的处理
    str1=json.dumps(dict1)
    print (u'序列化后的数据类型为:',type(str1))
    print (u'序列化后的数据为:',str1)
    #对str1进行反序列化
    dict2=json.loads(str1)
    print (u'反序列化后的数据类型:',type(dict2))
    print (u'反序列化后的数据:',dict2)

    输出:

    未序列化前的数据类型为: <class 'dict'>

    未序列化前的数据: {'age': 24, 'name': '雷子', 'address': '北京'}

    序列化后的数据类型为: <class 'str'>

    序列化后的数据为: {"age": 24, "name": "u96f7u5b50", "address": "u5317u4eac"}

    反序列化后的数据类型: <class 'dict'>

    反序列化后的数据: {'age': 24, 'name': '雷子', 'address': '北京'}

    结合requests库,来看返回的json数据,具体代码为:

  • 相关阅读:
    近一年工作感悟2
    项目管理实践感想
    领导力思考
    ASP.NET内置对象
    asp.net 在GridView控件上实现修改、添加、删除
    asp.net导出excel和打印指定内容的简单代码
    js让网页适应屏幕大小
    只能选择GridView中的一个CheckBox(单选CheckBox)
    JQuery实现拖拽draggable()方法
    获取XML文件中的值
  • 原文地址:https://www.cnblogs.com/wmh33/p/10779034.html
Copyright © 2011-2022 走看看