zoukankan      html  css  js  c++  java
  • python接口自动化-json数据处理

    前言

    有些post的请求参数是json格式的,需要导入json模块进行处理,json是一种数据交换格式,独立于编程语言

    一般常见的接口返回数据也是json格式的,我们在做判断的时候,往往只需要提取其中几个关键的参数就行,这时候就需要json来解析返回的数据了

    一、json模块简介

    1. json简介:json,全名 JavaScript Object Notation,是一种轻量级的数据交换格式,常用于http请求中

    2. 可以用 help(json) 查看对应的源码注释内容

        Encoding basic Python object hierarchies::
        
            >>> import json
            >>> json.dumps(['foo', {'bar': ('baz', None, 1.0, 2)}])
            '["foo", {"bar": ["baz", null, 1.0, 2]}]'
            >>> print(json.dumps(""fooar"))
            ""fooar"
            >>> print(json.dumps('u1234'))
            "u1234"
            >>> print(json.dumps('\'))
            "\"
            >>> print(json.dumps({"c": 0, "b": 0, "a": 0}, sort_keys=True))
            {"a": 0, "b": 0, "c": 0}
            >>> from io import StringIO
            >>> io = StringIO()
            >>> json.dump(['streaming API'], io)
            >>> io.getvalue()
            '["streaming API"]'
    

      

    二、encode(python ---> json)

    1.首先说下为什么要 encode?

    python 里面 bool  值是 True 和 False ,

      json   里面 bool  值是 true 和 false ,

    注意区分大小写!!! 在 python 里面写的代码,传到json里,肯定识别不了,所以需要把 python 的代码经过 encode 后成为 json 可识别的数据类型

    2.举个简单例子,下图中 dict 类型经过 json.dumps() 后变成 str,True 变成了 true,False 变成了 fasle

    注:查看数据类型用 type 函数

    3.以下对应关系表是从 json 模块的源码里面爬出来的 .python 的数据类,经过 encode 成 json 的数据类型,对应的表如下:

         |  | Python             | JSON       |
         |  +-------------------+---------------+

         |  +-------------------+---------------+
         |  | dict                  | object        |
         |  +-------------------+---------------+
         |  | list, tuple          | array         |
         |  +-------------------+---------------+
         |  | str, unicode      | string        |
         |  +-------------------+---------------+
         |  | int, long, float  | number      |
         |  +-------------------+---------------+
         |  | True                | true            |
         |  +-------------------+---------------+
         |  | False              | false           |
         |  +-------------------+---------------+
         |  | None              | null             |
         |  +-------------------+---------------+

    三、decode(json ---> python)

    1.转换操作详见代码:

    #conding:utf-8
    import requests
    import json
    d = {
        "a": None, "b": True, "c": False, "d": "JODIE", "e": ["1",11], "f": ("1r",27), "g": {"h": 3, "i": "17", "j": True}
        }
    print(type(d))
    dict_json = json.dumps(d)          #字典转json
    print(type(dict_json))
    print(dict_json)
    print("--------------------------------------")
    json_dict = json.loads(dict_json)  #json 转字典
    print(type(json_dict))
    print(json_dict)
    

    运行后的结果:

    2.同样json数据转化成python可识别的数据,对应的表关系如下

         |  | JSON               | Python      |

         |  +-------------------+---------------+

         |  +-------------------+---------------+

         |  | object             | dict             |
         |  +-------------------+---------------+
         |  | array               | list              |
         |  +-------------------+---------------+
         |  | string              | unicode      |
         |  +-------------------+---------------+
         |  | number (int)    | int, long     |
         |  +-------------------+---------------+
         |  | number (real)   | float          |
         |  +-------------------+---------------+
         |  | true                 | True           |
         |  +-------------------+---------------+
         |  | false               | False          |
         |  +-------------------+---------------+
         |  | null                 | None          |
         |  +-------------------+---------------+

  • 相关阅读:
    2017ecjtu-summer training #4 CodeForces 731C
    HDU 1232 并查集
    2017ecjtu-summer training #3 POJ3264
    2017ecjtu-summer training #4 UESTC 30
    斑羚飞渡 贪心
    Codeforces Round #565 (Div. 3) D. Recover it!
    P3398 仓鼠找sugar lca
    P3146 [USACO16OPEN]248 dp
    P1955 [NOI2015]程序自动分析 离散化
    P2949 [USACO09OPEN]工作调度Work Scheduling 贪心
  • 原文地址:https://www.cnblogs.com/JodieRao/p/10603588.html
Copyright © 2011-2022 走看看