JSON教程
1. JSON简介
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。JSON是纯文本形式的,采用键值对(key-value pairs)的方式存储数据。
2. JSON的基本结构
一个JSON对象由键值对组成,键(key)是一个字符串,值(value)可以是字符串、数字、布尔值、数组或其他JSON对象。
{
"name": "John",
"age": 30,
"isStudent": false,
"courses": ["math", "history", "chemistry"],
"address": {
"street": "123 Main St",
"city": "New York",
"state": "NY",
"zip": "10001"
}
}
3. JSON与Python
在Python中,可以使用内置的json
模块来处理JSON数据。
- 导入库 :
import json
- 将JSON字符串转换为Python对象 :
json_str = '{"name": "小明", "age": 18}'
python_dict = json.loads(json_str)
print(python_dict) # 输出:{'name': '小明', 'age': 18}
- 将Python对象转换为JSON字符串 :
student = {
"name": "小红",
"age": 20,
"scores": [98, 95, 92],
"is_monitor": True,
"hobby": None
}
json_string = json.dumps(student, ensure_ascii=False, indent=4)
print(json_string)
4. JSON文件操作
在实际开发中,经常需要读写JSON文件。
- 读取JSON文件 :
with open('data.json', 'r', encoding='utf-8') as file:
data = json.load(file)
print(data)
- 写入JSON文件 :
data = {
"name": "John",
"age": 30
}
with open('data.json', 'w', encoding='utf-8') as file:
json.dump(data, file, ensure_ascii=False, indent=4)
5. JSON与其他编程语言
JSON作为一种数据格式,在多种编程语言中都有广泛的应用,如PHP, Perl, Ruby和Java等。
6. JSON工具
-
jq :一个轻量级且灵活的命令行JSON处理器。
-
json2.js :JavaScript库,用于在浏览器中解析和生成JSON数据。
7. JSON与JavaScript
在JavaScript中,可以使用JSON.stringify()
将对象转换为JSON字符串,使用JSON.parse()
将JSON字符串转换为对象。
var obj = {
name: "Bill Gates",
age: 62,
city: "Seattle"
};
var myJSON = JSON.stringify(obj);
console.log(myJSON); // 输出:'{"name":"Bill Gates","age":62,"city":"Seattle"}'
var parsedObj = JSON.parse(myJSON);
console.log(parsedObj.name); // 输出:"Bill Gates"
8. JSON与XML的区别
-
JSON使用键值对存储数据,而XML使用标签存储数据。
-
JSON数据结构更简单,易于阅读和编写。
-
JSON支持多种数据类型,包括数组和布尔值,而XML只支持字符串。
9. JSON编码与解码
-
编码 (
json.dumps()
):将Python对象转换为JSON字符串。 -
解码 (
json.loads()
):将JSON字符串转换为Python对象。
10. JSON数据类型转换对照表
-
Python编码为JSON类型:
-
dict
->object
-
list
->array
-
str
->string
-
int
,float
->number
-
True
,False
->boolean
-
None
->null
-
JSON解码为Python类型:
-
object
->dict
-
array
->list
-
string
->str
-
number
-> `int