json 学习笔记
参考资料:Json 详解,5分钟学会_哔哩哔哩_bilibili
1.json数据格式的优势
json是一种文本数据格式,来源于javaScript对象语法。json本质上是一种文本规范,或一种字符串规范。json可以简单灵活地表示树型结构的数据。与其他数据格式如XML比较,json的结构更加简洁,没有多余的标记,因此在网络中传输时可以减少数据量,提高效率。
需要注意的是在程序中使用json数据,需要特定方法转化为对象变量才能使用。
2.json支持的值类型
不允许内嵌其他值的值类型
1.字符串
需要包含在一对双引号内" "
,字符串内如果有双引号需要转义\
。
2.数字
整数、浮点数
3.布尔值
true
、false
4.空值
允许内嵌的值类型
5.对象,键/值对字典(哈希表)
{"key1":"value1","key2":123,"key3":{}}
·需要包含在一对{}之内
·用,
隔开多个键值对,最后一个键值对后不能添加
·键值对的键必须为字符串
·值可以为任意值类型,且不需要统一
6.数组
["value1",true,[],123]
·需要包括在一对[]之内
·用,隔开多个值,且最后一个值后不能添加,
·数组的值可以是6种值类型的任意一种,且无需统一类型
在 json 标准中,对于数组和对象的长度以及它们可以嵌套的深度没有做出具体的限制。
3.python种JSON的使用
函数 | 描述 |
---|---|
load() | 从 JSON 文件读取数据,并将其解码成 Python 对象。 |
loads() | 解析 JSON 格式的字符串,返回 Python 对象。 |
dump() | 将 Python 对象编码成 JSON 格式,并写入 JSON 文件中。 |
dumps() | 将 Python 对象编码成 JSON 格式的字符串。 |
1. json.load(fp)
这个函数从一个 file-like object 中读取 JSON 数据,并将其反序列化为 Python 对象。这在从文件中加载 JSON 数据时非常有用。
参数说明:
fp
: 一个打开的支持.read()
方法的 file-like object。
用例:
import json
# 打开一个包含 JSON 数据的文件
with open('data.json', 'r') as f:
data = json.load(f)
print(data)
2. json.loads(s)
这个函数将一个 JSON 格式的字符串解码为 Python 对象。当处理从网络接口或其他来源接收的 JSON 字符串时,这个函数非常有用。
参数说明:
s
: 包含 JSON 数据的字符串。
用例:
import json
json_string = '{"name": "Carol", "age": 28, "is_student": false}'
# 解码 JSON 字符串
data = json.loads(json_string)
print(data)
通过这些函数,你可以方便地在 Python 对象和 JSON 格式之间进行转换,无论是处理文件还是处理网络传输的数据。
3. json.dump(obj, fp, ...)
这个函数用于将 Python 对象序列化为 JSON 格式,并直接写入到一个文件中。这是处理 Python 对象存储到文件中时非常有用的函数。
参数说明:
obj
: 要序列化的 Python 对象。fp
: 一个打开的文件对象,或者任何支持.write()
方法的 file-like object。- 其他可选参数,如
indent
用于美化输出,使其更易于阅读。
用例:
import json
data = {
'name': 'Alice',
'age': 25,
'is_student': False
}
# 打开一个文件用于写入
with open('data.json', 'w') as f:
json.dump(data, f, indent=4)
4. json.dumps(obj, ...)
这个函数将 Python 对象序列化为一个 JSON 格式的字符串。适用于需要将对象转化为字符串以便在网络上传输或其他需要字符串形式的场合。
参数说明:
obj
: 要序列化的 Python 对象。- 其他可选参数,如
indent
。
用例:
import json
data = {
'name': 'Bob',
'age': 30,
'is_student': True
}
# 序列化为 JSON 字符串
json_string = json.dumps(data, indent=4)
print(json_string)