zoukankan      html  css  js  c++  java
  • 使用 json 模块,使json数据格式与Python字典dict数据格式互相转换,获取数据更加方便

    一、定义

    • JSON 是一种数据格式

    • 使用 javaScript (Java 死鬼破特)对象表示法

     

    二、特点

    1、JSON 与 XML格式数据的区别

      

    ====== 区别

    • 两种格式的数据,都是跨语言,跨平台
    • c、c++、java、php、python、go 等都能处理这两种格式
    • Windows、Linux、Unix都能承载这两种格式
    • json 更为清晰,冗余更少,更轻量级,传输效率更高
    • xml 常常导致复杂的代码,极低的开发效率
    • 对于大多数 web 应用来说,根本不需要复杂的 xml 来传输数据

    2、json 结构

    • 对象结构:键值对
      • json 格式的数据,在 python 中是以字符串或者字节类来呈现
      • json 格式数据,所有的 key 都是用“双引号”来包裹的
      • “单引号”是不可以的
      • value 数字可以不用双引号包裹
      • 空值一定是 小写的 null
    a = {
        "key1": 12,
        "key2": "value"
    }
    • 数组结构-嵌套字典的列表
    b = [
        {
            "key1": "value1",
            "key2": "value2"
        },
        {
            "key3": "value3",
            "key4": "value4"
        },
    ]

     

    3、注意事项

    • json 格式的数据,在 python 中以字符串形式呈现
    • json 中的空为 null
    • json 中除空和数字外,所有的 key 和 value 都是字符串,且一定要以双引号括起来

     

    三、json数据格式与Python字典互相转换 ------ 为了获取数据方便

    看到 null 是 json 格式字符串,因为使用 eval 进行转换会报错(报未定义);否则是 字典类型字符串

    没有 null 可以是 json 格式也可以是 字典类型字符串

    • loads()和load():
      • loads() 是直接读取json格式的数据,并转换为字典型数据类型
      • load() 是读取json文件,将从json文件对象中获取的json数据转换为字典型数据类型
    • dumps()和dump():
      • dumps() 是将字典型数据类型直接转换为json数据格式
      • dump() 是将字典型数据类型转换为json数据格式后存放到json格式文件中

     

    json.loads :(篓子)-- 将 json 格式的数据转化为-----Python中的字典类型

    import json
    # json格式的字符串 -- 字符串要写在同一行,外层使用单引号
    data_json = '{"msg": "登录成功", "code": "10001", "data": null, "status": 1}'
    
    # 将 json 格式的数据转化为 Python 中的字典类型
    # 会将 json 格式空值null转化为 Python 中字典类型的空值 None
    data_dict = json.loads(data_json, encoding='utf-8')
    print(data_dict)
    
    # 结果:
    {'msg': '登录成功', 'code': '10001', 'data': None, 'status': 1}

     

    json中的.dumps   : (当慕斯)Python中字典dict类型转化为-------json格式的数据

    # 将python中字典类型转化为json格式的数据
    # 会将 Python 中字典类型的空值 None 转换为 json 格式的空值 null
    one_dict = {'name': '麦穗', "age": 18, "money": None}
    
    # 记忆:宕机 --> dj(dict -- json)
    # ensure_ascii=True 默认为 True 遇到中文进行编码,False 不进行编码
    one_json = json.dumps(one_dict, ensure_ascii=False)
    print(one_json)
    
    # 结果:{"name": "麦穗", "age": 18, "money": null}

     

    json.load() :(楼的)读取 json 文件中的 json 数据并转换为 字典 型的数据类型

    import json
    
    # 创建json格式的TXT文件,
    # 内容为:{"msg": "登录成功", "code": "10001", "data": null, "status": 1}
    
    # 第一种情况,读取json文件中的json数据并转换为字典型的数据类型
    # mode 默认为="r",encoding 指定编码
    with open("json_text.txt", encoding="utf-8") as file:
        one_dict = json.load(file)
    print(one_dict)
    
    # 结果:{'msg': '登录成功', 'code': '10001', 'data': None, 'status': 1}

     

    json.dump() :(当泼)将字典数据类型转换为 json 格式数据并 存储 到 json 格式的文件

    # 第二种,将字典数据类型转换为 json 格式数据并存储到json格式的文件中
    two_dict = [{"one": {"name": "流年", "age": 20, "love": None}},
                {"two": {"name": "阿登", "age": 25, "love": True}}]
    # 使用上下文管理器 with
    # ensure_ascii(恩数额儿_安斯k) 默认True,会进行编码;为如果是中文不进行编码使用 False
    # indent (in den 特) 空两格美化
    with open("write_json.txt", mode="w", encoding="utf-8") as one_file:
        json.dump(two_dict, one_file, ensure_ascii=False, indent=2)
    
    # 结果:
    [
      {
        "one": {
          "name": "流年",
          "age": 20,
          "love": null
        }
      },
      {
        "two": {
          "name": "阿登",
          "age": 25,
          "love": true
        }
      }
    ]

      

      json 模块封装,看看大佬怎么封装的,转载自:https://www.cnblogs.com/xiaogongjin/p/11400475.html

    import json
    
    
    class HandleJson:
        '''
        定义一个json格式数据处理类
        '''
    
        @staticmethod
        def loads_data(data):
            '''
            将json数据格式的数据转换为字典型的数据类型
            :param data: json格式字符串
            :return: 字典数据类型
            '''
            dict_ison = json.loads(data)
            return dict_ison
    
        @staticmethod
        def load_data(filename):
            '''
            读取json文件中的json数据并转换为字典型的数据类型
            :param filename:json文件名
            :return:字典数据类型
            '''
            with open(filename, mode='r', encoding='utf-8') as fp:
                dict_file = json.load(fp)
            return dict_file
    
        @staticmethod
        def dumps_data(data):
            '''
            将字典数据类型转换为json格式类型数据
            :param data: 字典数据类型
            :return: json格式字符串
            '''
            json_dict = json.dumps(data, ensure_ascii=False)
            return json_dict
    
        @staticmethod
        def dump(data, filename):
            '''
            将字典数据类型转换为json格式数据并存储到json格式的文件中
            :param data: 字典数据类型
            :param filename: json文件名
            :return: json格式文件
            '''
            with open(filename, mode='w', encoding='utf-8') as fp:
                json.dump(data, fp)

     

     

    *******请大家尊重原创,如要转载,请注明出处:转载自:https://www.cnblogs.com/shouhu/   谢谢!!******* 

    本文仅供参考;如果这篇文件对你有所帮助,麻烦动动发财的小手,推荐一波支持下万分感谢 *******请大家尊重原创,如要转载,请注明出处:作者:守护@往昔;转载自:https://www.cnblogs.com/shouhu/,谢谢!!*******
  • 相关阅读:
    Android “swipe” vs “fling”
    Parcel
    ViewConfiguration 和 ViewConfigurationCompat
    Hive记录-配置支持事务管理hive-site.xml
    SQL记录-资源正忙online或nowait
    SQL记录-解锁和dbms_job操作
    Java记录-SpringMVC整合Echarts画地图加散点图
    Hive记录-impala常用命令
    Hive记录-Sqoop常用命令
    Linux记录-shell一行代码杀死进程(收藏)
  • 原文地址:https://www.cnblogs.com/shouhu/p/12133434.html
Copyright © 2011-2022 走看看