当前位置 博文首页 > Elite-Wang:python中json模块的使用

    Elite-Wang:python中json模块的使用

    作者:Elite-Wang 时间:2021-01-30 19:09

    Python自带json模块,它有loads、dumps、load和dump这4个功能,用于Json格式字符串和Python数据类型间进行转换。

    一、json.loads()

    • 把Json格式字符串解码转换成Python对象

    • Json中的对象和数组类型字符串会转换成Python中的字典和列表

    • 示例

      In [1]: import json #导入json模块
      
      In [2]: json_list_str = '[1,2,3,4]' #数组类型json字符串
      
      In [3]: json.loads(json_list_str) #返回python列表
      Out[3]: [1, 2, 3, 4]
      
      In [4]: json_dict_str = '{"name":"张三","age":30}'#对象类型json字符串
      
      In [5]: json.loads(json_dict_str) #返回Python字典
      Out[5]: {'name': '张三', 'age': 30}

    二、json.dumps()

    • 实现python类型转化为json字符串

    • Python中的列表或元组会转换成Json数组类型字符串,字典会转化成对象类型字符串

    • 示例

      In [6]: tuple = (1,2,3,4,5)
      
      In [7]: list = [1,2,3,4,5]
      
      In [8]: dict = {"name":"张三","age":30}
      
      In [9]: json.dumps(tuple) #python元组会转化成json中数组类型字符串
      Out[9]: '[1, 2, 3, 4, 5]'
      
      In [10]: json.dumps(list) #python列表转换成json中数组类型字符串
      Out[10]: '[1, 2, 3, 4, 5]'
      
      In [11]: json.dumps(dict) #python字典转换成json对象类型字符串,序列化时默认采用ascii编码
      Out[11]: '{"name": "\\u5f20\\u4e09", "age": 30}'
      
      In [12]: json.dumps(dict,ensure_ascii=False) #将ensure_ascii参数设为False,采用utf-8编码
      Out[12]: '{"name": "张三", "age": 30}'

    三、json.dump()

    • 将Python内置类型序列化为json对象后写入文件

    • 示例

      In [13]: python_data = [{"name":"张三","age":30},{"name":"李四","age":40}]
      
      In [14]: json.dump(python_data,open('json_data.json','w'),ensure_ascii=False) #将python类型数据转换成json类型,并写入文件json_data.json
      
      In [15]: with open('json_data.json') as f: #查看写入文件中的json数据
          ...:     print(f.read())
          ...: 
      [{"name": "张三", "age": 30}, {"name": "李四", "age": 40}]

    四、json.load()

    • 读取文件中json形式的字符串,并转化成python类型

    • 示例

      In [16]: json.load(open('json_data.json')) #读取文件json_data.json中的json字符串,并转换成python中的列表类型
      Out[16]: [{'name': '张三', 'age': 30}, {'name': '李四', 'age': 40}]
      
      In [17]: type(json.load(open('json_data.json'))) #python中的列表类型
      Out[17]: list

       

    bk