zoukankan      html  css  js  c++  java
  • Python中的dump() 和load()以及dumps()和loads()

    本身不知道深入,就只能浮于表面,与君共勉之

    先把结论写在前面

    1.不加s的标识对json文件的读写,将内存中值读取写入到json后缀文件,或者将json后缀文件中内容读取到内存

    2.加了s的主要是字符串类型和其他数据类型的互转

     JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。

    Python与JSON数据类型对应表:
     

    1、json.dumps()和json.loads()是json格式处理Python的两种数据类型之间的互转
      (1)json.dumps()函数是将数据类型字典/列表转化为数据类型字符串
      (2)json.loads()函数是将数据转换字符串转为数据类型字典/列表或其他的格式

     2. json.dump()和json.load()是读取json格式文件内容或者将内容写入json格式文件中

      (1)json.dump() 将内存中的值传入到指定json文件中

          (2)json.load() 读取json文件中内容到内存

    import json
    
    string = '{"name":"test", "type":{"name":"seq", "parameter":["1", "2"]}}'
    string2 = 'abcdefg'
    list01 = [2, 1, 3, 4, 5]
    dit01 = {"name": "test", "type": {"name": "seq", "parameter": ["1", "2"]}}
    print(string)
    print(type(string))
    print(list01)
    print(type(list01))
    print(dit01)
    print(type(dit01))
    
    
    # <class 'str'>
    # [2, 1, 3, 4, 5]
    # <class 'list'>
    # {'name': 'test', 'type': {'name': 'seq', 'parameter': ['1', '2']}}
    # <class 'dict'>
    # {'name': 'test', 'type': {'name': 'seq', 'parameter': ['1', '2']}}
    # <class 'dict'>
    
    # json.loads是将字符串类型转换为dict类型
    s = json.loads(string)
    print(s)
    print(type(s))
    
    # 非键值对的字符串不支持转换为对应的dict类型
    # s2 = json.loads(string2)
    # print(s2)
    # print(type(s2))
    
    # TypeError: the JSON object must be str, bytes or bytearray, not list
    # s1 = json.loads(list)
    # print(s1)
    # print(type(s1))
    
    string02 = json.dumps(s)
    print(string02)
    print(type(string02))
    
    print(s.keys())
    print(s["name"])
    print(s["type"]["name"])
    print(s["type"]["parameter"][1])
    
    # None是值,Nonetype是类型。同理,数字1是值,int是类型。注意:在python中是没有Null的,取而代之的是None
    a = None
    print(type(a))
    b = 1
    print(type(b))
    
    a = '[abc]'
    print(a[0])
    
    ##TypeError: string indices must be integers
    abc = '[abc]'
    # print(abc['0'])
    # -*- coding: utf-8 -*-
    import json
    
    dict01 = {
        'seatPlanDistributionList': '[{"stdSeatPlanId": "5fc091e05f45b902499ee72c", "stdSeatPlanName": "400 元", "originalPrice": 400.0, "enabled": false, "salesQuantityLimit": "", "soldStocks": 0, "commissionRate": 0}, {"stdSeatPlanId": "5fc091e05f45b902499ee737", "stdSeatPlanName": "200 元", "originalPrice": 200.0, "enabled": false, "salesQuantityLimit": "", "soldStocks": 0, "commissionRate": 0}]',
        'stockOrderType': ['PAPER_TICKET', 'E_TICKET'], 'enterVenueType': ['PAPER', 'ETICKET'], 'stockOrderAuth': [],
        'workTicketType': [], 'realNameCloseAuth': 'FALSE', 'distributionAuth': 'FALSE',
        'distributionId': '5f71ae3757d98e735a697669', 'merchantId': '5ecb71f490ee5b6848ae2454'}
    dict02 = {'name': 'wjp', 'age': '22'}
    data_list = [8, '22', 1, 22, '星辰']
    print(type(dict01))
    print(type(dict02))
    # dict转str 使用json.dumps的方法,可以将json对象转化为字符串
    j_dict01 = json.dumps(dict01)
    print(type(j_dict01))
    # 列表转str 使用json.dumps的方法,可以将json对象转化为字符串
    j_list = json.dumps(data_list, ensure_ascii=False)
    print(type(j_list))
    print(j_list)
    
    print("++++换行+++")
    print("++++indent参数为缩进的空格数+++")
    print(json.dumps(dict02, sort_keys=True, indent=4, ensure_ascii=False))
    print("++++现在结束+++")
    
    data_dict = '{"name": "YYY","year": 10000,"height": 170,"home": "四川"}'
    data_list = '[8, "22", 1, 22, "星辰"]'
    p_dict = json.loads(data_dict)
    p_list = json.loads(data_list)
    print(type(data_dict))
    print(type(data_list))
    print(type(p_dict))
    print(type(p_list))
    
    filename = 'file03.json'
    data = (1, 2, 3, 4, 5, 6, 7, 8, 9, 1000)
    with open(filename, 'w') as f:
        json.dump(data, f)
    
    filename = 'file03.json'
    with open(filename) as f:
        data = json.load(f)
        print(data)
    
    # 总结:json模块的load()、dump()用于编码和解码JSON数据,处理文件。转换包含所有合法数据类型的Python对象、JSON数据类型!
    ------------------------- A little Progress a day makes you a big success... ----------------------------
  • 相关阅读:
    C++窗体应用程序
    C++继承方式简介及公有继承
    C++(继承的基本概念和语法)
    python(12)---科赫特雪花
    python(11)---pyinstaller
    20200914 day9 数据结构复习(一)
    20200914 day9 刷题记录
    20200913 day8模拟(二)
    20200912 day7 刷题记录
    20200912 day7 图论复习(一)
  • 原文地址:https://www.cnblogs.com/qianjinyan/p/14285047.html
Copyright © 2011-2022 走看看