美文网首页接口测试
[PPJ_03] JSON数据解析 & 文件处理

[PPJ_03] JSON数据解析 & 文件处理

作者: Fighting_001 | 来源:发表于2018-10-03 18:36 被阅读50次

    目录结构

    一、JSON简介
        1. JSON概念
        2. JSON语法
        3. JSON值的类型
    二、JSON数据解析
        1. Python数据类型 ==> Json数据类型
        2. Json数据类型 ==> Python数据类型
    三、JSON文件处理
        1. 将JSON数据写入到文件中
        2. 从JSON文件中读取数据
    

    一、JSON简介

    1. JSON概念

    JSON:(JavaScript Object Notation,JavaScript对象表示法)是一种轻量级的数据交换格式。它独立于语言和平台,JSON解析器和JSON库支持不同的编程语言。JSON具有自我描述性,很容易理解。目前大多数接口返回的数据格式为JSON,因此进行接口测试必须掌握JSON。

    2. JSON语法

    语法规则:

    • 数据在键/值对中
    • 数据由逗号分隔
    • 花括号{}保存对象
    • 方括号[]保存数组
    • JSON键/值对-书写格式:key:value
      如:"name":"Bob"
    3. JSON值的类型
    • 数字(整数or浮点数)
    • 字符串(在双引号""中)
    • 逻辑值(true / false)
    • 数组(在方括号[]中)
    • 对象(在花括{}中)
    • null

    1)JSON数字

    "status_code":200
    

    2)JSON字符串

    "city":"Chengdu"
    

    3)JSON逻辑值

    "result":true
    

    4)JSON数组

    "user":["test00001","test00002","test00003"]
    

    5)JSON对象
    JSON对象在花括号{}中书写,对象可以包含多个键/值对:

    {"firstlane":"John","lastlame":"Doe")
    

    PS:在接口测试过程中,一般都是返回JSON对象类型。

    6)JSON数据嵌套
    比如在数组中含多个对象:

    {
    "cmployees":[
    {"firstName":"John","lastlame":"Doe"},
    {"firstName":"Anna","lastlame":"Smith"},
    {"firstName":"Peter","lastName":"Jones"}
    ]
    }
    

    在上面的例子中,对象"employees"是包含3个对象的数组,每个对象代表1条关于某人(firstName+lastName)的记录。

    二、JSON数据解析

    Python3可使用json模块对JSON数据进行编码和解码,包含有2个方法:

    • json.dumps:Python数据类型-->Json数据类型
    • json.loads:Json数据类型-->Python数据类型
    1. Python数据类型 ==> Json数据类型

    json.dumps() 函数

    # 导入json
    import json
    
    # 定义一个字典变量data
    data = {'id':1,'name':'test00001','password':'123456'}
    
    # 打印data的数据类型
    print(type(data))
    
    # 定义变量,将Python数据转换为JSON数据,存储到该变量
    json_str = json.dumps(data)
    
    # 打印转换后的数据类型
    print(type(json_str))
    
    # 打印转换后的数据内容
    print(json_str)
    

    执行结果:

    <class 'dict'>
    <class 'str'>
    {"id": 1, "name": "test00001", "password": "123456"}
    

    从上通俗理解:
    json.dumps() 函数实现:字典(dict) ==> 字符串(str)

    2. Json数据类型 ==> Python数据类型

    json.loads() 函数

    import json
    
    # 定义json类型的字符串
    json_str = '{"id":1,"name":"test00001","password":"123456"}'
    
    # 将Json类型转换为Python类型,存储到data变量中
    data = json.loads(json_str)
    
    print(type(json_str))   # 打印转换前的数据类型
    print(type(data))   # 打印转换后的数据类型
    print(data) # 打印转换后的数据内容
    print(data['id'])
    print(data['name'])
    

    执行结果:

    <class 'str'>
    <class 'dict'>
    {'id': 1, 'name': 'test00001', 'password': '123456'}
    1
    test00001
    

    从上通俗理解:
    json.loads() 函数实现:字符串(str) ==> 字典(dict)

    三、JSON文件处理

    使用场景:将JSON数据写入到文件中,or从JSON文件中读取数据

    1. 将JSON数据写入到文件中

    json.dump() 函数

    import json
    
    # Python数据-->JSON数据
    data = {'id':1,'name':'test00001','password':'123456'}
    json_str = json.dumps(data)
    
    # 写入json数据到指定文件中(无则创建)
    with open('data.json','w') as f:
        json.dump(data,f)
    

    执行结果:
    在当前目录下创建了一个json格式文件data.json,并将其前转换的json数据写入到了该文件中

    2. 从JSON文件中读取数据

    json.load() 函数

    import json
    
    # 从data.json文件中读取JSON数据
    with open('data.json','r') as f:
        data = json.load(f)
        print(data)
    

    执行结果:

    {'id': 1, 'name': 'test00001', 'password': '123456'}
    

    参考资料:
    [1] JSON库官方文档-JSON encoder and decoder

    相关文章

      网友评论

        本文标题:[PPJ_03] JSON数据解析 & 文件处理

        本文链接:https://www.haomeiwen.com/subject/ksozoftx.html