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))
