python标准库模块——json库的用法

文章目录

  • 前言
  • 作用
  • loads,load的用法
  • dumps,dump的用法
  • 结语

  • 前言

    json,全称为JavaScript Object Notation,也就是JavaScript对象标记,通过对象和数组的组合表示数据,虽然构造简洁但是结构化程度非常高,是一种轻量级的数据交换格式。

    作用

    主要用于将python对象编码为json格式输出或存储,以及将json格式对象解码为python对象。


    一个 JSON 对象可以写为如下形式:

    [{
        "name": "小明",
        "height": "170",
        "age": "18"
    }, {
         "name": "小红",
        "height": "165",
        "age": "20"
    }]
    

    由中括号包围的就相当于列表类型,列表中的每个元素可以是任意类型,这个示例中它是字典类型,由大括号包围。

    JSON 可以由以上两种形式自由组合而成,可以无限次嵌套,结构清晰,是数据交换的极佳方式。

    下面先来了解一下json中loads,和load

    loads,load的用法

    例如,有一段 JSON 形式的字符串,它是 str 类型,我们用 json.loads转换成python的数据结构,变成列表或字典,这样我们就能进行操作了。

    import json
    
    data = '''
    [{
        "name": "小明",
        "height": "170",
        "age": "18"
    }, {
         "name": "小红",
        "height": "165",
        "age": "20"
    }]
    '''
    
    # 打印data类型
    print(type(data))
    # json类型的数据转化为python类型的数据
    new_data = json.loads(data)
    # 打印data类型
    print(type(new_data))
    

    运行结果如下

    这样来我们就可以用索引获取对应的内容了,例如想要获取第一个元素里的name属性,可以使用如下方式:

    import json
    
    data = '''
    [{
        "name": "小明",
        "height": "170",
        "age": "18"
    }, {
         "name": "小红",
        "height": "165",
        "age": "20"
    }]
    '''
    
    # 打印data类型
    print(type(data))
    # json类型的数据转化为python类型的数据
    new_data = json.loads(data)
    # 获取内容
    name = new_data[0]['name']
    new_name = new_data[0].get('name')
    # 打印转换后data类型
    print(type(new_data))
    
    print(name)
    print(new_name)
    

    运行结果

    以上就是loads的用法。

    load的用法是把json格式文件,转换成python类型的数据。

    注意 :load方法操作的是整个文件对象,这里是将整个整个文件对象里面的内容转化为json对象。(下图是文件操作对象)

    示例

    import json
    
    import json
    
    
    # load的用法是把json格式文件,转换成python类型的数据。
    
    # 构建该文件的文件对象
    with open('test1.json',encoding='utf-8')as fp:
        # 加载垓文件对象,转换为python类型的数据
        pyth_list = json.load(fp)
        print(pyth_list)
        print(type(pyth_list))
        print(type(pyth_list[0]))
    
    
    

    需要有一个文件操作对象运行结果

    以上就是loads和load的用法,两种方法可以在适当的场景下使用。

    dumps,dump的用法

    json.dumps()函数,把python类型的数据转换成json字符串
    json.dump()函数, 把python类型的数据以json格式储存到文件中



    dumps函数

    import json
    
    data = '''
    [{
        "name": "小明",
        "height": "170",
        "age": "18"
    }, {
         "name": "小红",
        "height": "165",
        "age": "20"
    }]
    '''
    
    # 打印要来data类型
    print(type(data))
    # json类型的数据转化为python类型的数据
    new_data = json.loads(data)
    
    # 把python类型的数据转换成json字符串
    lit = json.dumps(new_data)
    
    # 打印转换后data类型
    print(type(new_data))
    
    print(type(lit))
    

    运行结果

    其实loads和dumps的用法都是一致的,loads是将json类型的数据转化为python类型的数据,而dumps是将json类型的数据转化为python类型的数据。相当于一个是编码一个是解码。

    dump函数
    把python类型的数据以json格式储存到文件中

    import json
    import json
    
    data = '''
    [{
        "name": "小明",
        "height": "170",
        "age": "18"
    }, {
         "name": "小红",
        "height": "165",
        "age": "20"
    }]
    '''
    
    # json类型的数据转化为python类型的数据
    new_data = json.loads(data)
    
    # 把python类型的数据以json格式储存到文件中
    # 构建要写入文件对象
    with open('test1.json','w',encoding='utf-8')as fp:
        # 把python类型的数据以json格式储存到文件中
        json.dump(new_data,fp,ensure_ascii=False)
    
    
    
    

    为了输出中文,还需要指定参数 ensure_ascii 为 False

    储存文件

    结语

    本章中,我们了解了用 Python 进行 JSON 操作的方法,后面做数据解析时经常会用到,建议熟练掌握。

    来源:王同学在这

    物联沃分享整理
    物联沃-IOTWORD物联网 » python标准库模块——json库的用法

    发表评论