json模块
本文介绍了JSON作为轻量级数据交换格式的特点和优势,以及它在Python中的使用。通过json模块,探讨了如何使用dumps和loads进行Python对象与JSON字符串的转换,同时展示了如何使用dump和load进行文件操作。
1. JSON简介
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,它是JavaScript的子集,易于人阅读和编写。
JSON用来存储和交换文本信息,比xml更小/更快/更易解析,易于读写,占用带宽小,网络传输速度快的特性,适用于数据量大,不要求保留原有类型的情况。
前端和后端进行数据交互,其实就是JS和Python进行数据交互!
2. JSON语法规则
- 名称必须用双引号(即:
" "
)来包括 - 值可以是双引号包括的字符串、数字、true、false、null、JavaScript数组,或子对象
- 数据在name/value中
- 数据见用逗号分隔
- 花括号保存对象
- 方括号保存数组
3. JSON数据类型
python与json数据类型的映射关系:
+-------------------+---------------+
| Python | JSON |
+===================+===============+
| dict | object |
+-------------------+---------------+
| list, tuple | array |
+-------------------+---------------+
| str | string |
+-------------------+---------------+
| int, float | number |
+-------------------+---------------+
| True | true |
+-------------------+---------------+
| False | false |
+-------------------+---------------+
| None | null |
+-------------------+---------------+
4.JSON中常用的方法
json是一个特殊的字符串。 【长的像列表/字典/字符串/数字/真假】
注意:不带s的是序列化到文件或者从文件反序列化,带s的都是内存操作不涉及持久化。
4.1序列化和反序列化
dumps:序列化
# 序列化,将python的值转换为json格式的字符串。 import json v = [12,3,4,{'k1':'v1'},True,'asdf'] v1 = json.dumps(v) print(v1) # '[12, 3, 4, {"k1": "v1"}, true, "asdf"]'
loads: 反序列化
# 反序列化,将json格式的字符串转换成python的数据类型 v2 = '["alex",123]' print(type(v2)) # <class 'str'> v3 = json.loads(v2) print(v3,type(v3)) # ['alex', 123] <class 'list'>
字典或列表中如有中文,序列化时想要保留中文显示
v = {'k1':'alex','k2':'李杰'} import json val = json.dumps(v,ensure_ascii=False) print(val)
4.2序列化和反序列化的文件操作
dump 序列化到文件
import json v = {'k1':'alex','k2':'李杰'} f = open('x.txt',mode='w',encoding='utf-8') val = json.dump(v,f) # 使用dump和load可以读写文件 print(val) f.close()
load 从文件读取内容进行反序列话
import json v = {'k1':'alex','k2':'李杰'} f = open('x.txt',mode='r',encoding='utf-8') data = json.load(f) f.close() print(data,type(data))