JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人和机器阅读和解析。它基于JavaScript的对象表示法,但被广泛用于多种编程语言。
JSON中的数据类型
- 字符串(String):用双引号包围,如 “Hello, World!”。
- 数字(Number):如 123、3.14,无引号。
- 布尔值(Boolean):true 或 false。
- 数组(Array):如 [1, 2, “abc”, true]。
- 对象(Object):如 {“name”: “Alice”, “age”: 30}。
- 空值(Null):表示空,如 null。
JSON的基本语法
- 数据在键值对中:每个键值对由键和值组成,格式为 “key”: value。
- 数据由逗号分隔:多个键值对之间使用逗号分隔。
- 对象由花括号 {} 包围:表示一个无序的键值对集合。
- 数组由方括号 [] 包围:表示一个有序的值的集合。
- 键 必须是字符串(用双引号包裹),值 可以是字符串、数字、布尔值、数组、对象或 null。
JSON示例
{"args": {},"headers": {"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7","Accept-Encoding": "gzip, deflate, br, zstd","Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6","Host": "www.httpbin.org","Priority": "u=0, i","Sec-Ch-Ua": "\"Chromium\";v=\"130\", \"Microsoft Edge\";v=\"130\", \"Not?A_Brand\";v=\"99\"","Sec-Ch-Ua-Mobile": "?0","Sec-Ch-Ua-Platform": "\"Windows\"","Sec-Fetch-Dest": "document","Sec-Fetch-Mode": "navigate","Sec-Fetch-Site": "none","Sec-Fetch-User": "?1","Upgrade-Insecure-Requests": "1","User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36 Edg/130.0.0.0","X-Amzn-Trace-Id": "Root=1-672db183-55e0183d3ee3822d699e15c5"},"origin": "45.32.145.117","url": "https://www.httpbin.org/get"
}
Python中json模块相关方法
load()
- 从文件对象读取 JSON 格式的数据并将其解析为 Python 对象。
- 用于直接从文件中加载 JSON 数据。
import json
with open('data.json', 'r') as file:data = json.load(file)
print(data)
loads()
从字符串中解析 JSON 格式的数据并将其转换为 Python 对象。
用于从 JSON 字符串中加载数据。
import json
json_string = '{"name": "Alice", "age": 25}'
data = json.loads(json_string)
print(data)
dump
- 将 Python 对象转换为 JSON 格式,并将其写入到文件中。
- 用于将 JSON 数据保存到文件。
import json
data = {"name": "Bob","age": 30,"isStudent": True
}
with open('output.json', 'w') as file:json.dump(data, file, indent=4) # 使用 indent 参数使输出美观
dumps
- 将 Python 对象转换为 JSON 格式的字符串。
- 用于在程序中将 Python 对象转换为 JSON 字符串以便于传输或输出。
import json
data = {"name": "Charlie","age": 22,"isStudent": False
}
json_string = json.dumps(data, indent=4) # 使用 indent 参数格式化输出
print(json_string)