2022年 11月 6日

教你怎么用Python解析JSON

SON (JavaScript Object Notation) 是一种轻量级的数据交换格式。Python3 中可以使用 json 模块来对 JSON 数据进行编解码,主要包含了下面4个操作函数:

 

提示:所谓类文件对象指那些具有read()或者 write()方法的对象,例如,f = open(‘a.txt’,’r’),其中的f有read()方法,所以f就是类文件对象。 

在json的编解码过程中,python 的原始类型与JSON类型会相互转换,具体的转化对照如下:

Python 编码为 JSON 类型转换对应表:


JSON 解码为 Python 类型转换对应表:


操作示例 :

 

  1. import json
  2.  
  3. data = {
  4.     'name': 'pengjunlee',
  5.     'age': 32,
  6.     'vip': True,
  7.     'address': {'province': 'GuangDong', 'city': 'ShenZhen'}
  8. }
  9. # 将 Python 字典类型转换为 JSON 对象
  10. json_str = json.dumps(data)
  11. print(json_str) # 结果 {"name": "pengjunlee", "age": 32, "vip": true, "address": {"province": "GuangDong", "city": "ShenZhen"}}
  12.  
  13. # 将 JSON 对象类型转换为 Python 字典
  14. user_dic = json.loads(json_str)
  15. print(user_dic['address']) # 结果 {'province': 'GuangDong', 'city': 'ShenZhen'}
  16.  
  17. # 将 Python 字典直接输出到文件
  18. with open('pengjunlee.json', 'w', encoding='utf-8') as f:
  19.     json.dump(user_dic, f, ensure_ascii=False, indent=4)
  20.  
  21. # 将类文件对象中的JSON字符串直接转换成 Python 字典
  22. with open('pengjunlee.json', 'r', encoding='utf-8') as f:
  23.     ret_dic = json.load(f)
  24.     print(type(ret_dic)) # 结果 <class 'dict'>
  25.     print(ret_dic['name']) # 结果 pengjunlee

注意:使用eval()能够实现简单的字符串和Python类型的转化。 

  1. user1 = eval('{"name":"pengjunlee"}')
  2. print(user1['name']) # 结果 pengjunlee