编程语言·
JSON速查表
这是一个快速参考速查表,帮助理解和编写JSON格式的配置文件。
Getting Started
Introduction
JSON是一种轻量级的基于文本的开放标准,设计用于人类可读的数据交换
- JSON 代表 JavaScript 对象表示法。
- JSON 易于阅读和编写。
- JSON 是一种与语言无关的数据交换格式。
- JSON 文件扩展名是.json。
- JSON 的互联网媒体类型是 application/json。
示例 1
{
"name": "Jason",
"age": 39,
"height": 1.92,
"gender": "M",
"salary": 70000,
"married": true,
"children": [
{ "name": "Tom", "age": 9, "gender": "M" },
{ "name": "Ava", "age": 7, "gender": "F" }
]
}
类型
类型 | 描述 |
---|---|
Number | 双精度浮点数 |
String | 一系列字符 |
Boolean | true 或者 false |
Array | 有序值序列 |
Value | 字符串、数字、布尔值、空值... |
Object | 无序的键值对集合 |
null | 空值或空 |
字符串
\" | 双引号 |
\\ | 反斜杠 |
\/ | 正斜杠 |
\b | 退格符 |
\f | 换页符 |
\n | 换行符 |
\r | 回车符 |
\t | 制表符 |
\u | 后跟四个十六进制数字 |
示例 2
{
"url": "https://chatsheet.org",
"msg": "Hi,\n\"chatsheet.org\"",
"intro": "Share quick reference and cheat sheet for developers."
}
无效字符串
{ "foo": "bar" }
必须用双引号分隔。
数字
类型 | 描述 |
---|---|
Integer | 数字 1-9、0 和正负号 |
Fraction | 小数如 0.3、3.9 |
Exponent | 指数形式如 e、e+、e-、E、E+、E |
示例 3
{
"positive": 12,
"negative": -1,
"fraction": 10.25,
"exponent": 1.0e2,
"zero": 0
}
无效数字
{ "foo": 0xff }
在 JSON 中只能使用十进制字面量。
对象
{
"color": "紫色",
"id": "210",
"composition": {
"R": 70,
"G": 39,
"B": 89
},
"empty_object": {}
}
多个键值对由逗号分隔。
数组
[1, 2, 3, 4, 5]
以 [
开始,以 ]
结束。
对象数组
{
"children": [
{ "name": "Jimmy Smith", "age": 15 }, // 子对象:名称为 "Jimmy Smith",年龄为 15
{ "name": "Sammy Sosa", "age": 12 } // 子对象:名称为 "Sammy Sosa",年龄为 12
]
}
这些 JSON 数据展示了数组和对象数组的结构,提供了注释进行每个字段的语义化解释。
数组的对象
{
"attributes": ["a1", "a2"], // 属性数组包含 ["a1", "a2"]
"methods": ["getter", "setter"], // 方法数组包含 ["getter", "setter"]
"empty_array": [] // 空数组
}
二维数组
{
"my_sequences": [
[1, 2, 3], // 第一行包含 [1, 2, 3]
[4, 5, 6], // 第二行包含 [4, 5, 6]
[7, 8, 9, 0], // 第三行包含 [7, 8, 9, 0]
[10, 11] // 第四行包含 [10, 11]
]
}
这些 JSON 数据展示了对象中包含数组和二维数组的结构,提供了注释进行每个字段的语义化解释。
对象的对象
{
"Mark McGwire": {
"hr": 65, // Mark McGwire 的 home run 数为 65
"avg": 0.278 // Mark McGwire 的平均击球率为 0.278
},
"Sammy Sosa": {
"hr": 63, // Sammy Sosa 的 home run 数为 63
"avg": 0.288 // Sammy Sosa 的平均击球率为 0.288
}
}
嵌套
{
"Jack": {
"id": 1, // Jack 的 id 为 1
"name": "Franc", // Jack 的名称为 "Franc"
"salary": 25000, // Jack 的薪资为 25000
"hobby": ["a", "b"], // Jack 的爱好为 ["a", "b"]
"location": {
// Jack 的位置信息
"country": "A", // 国家为 "A"
"city": "A-A" // 城市为 "A-A"
}
}
}
在 JavaScript 中访问 JSON 数据
访问对象
let myObject = {
name: "Jason", // 名称为 "Jason"
last: "Doe", // 姓为 "Doe"
age: 39, // 年龄为 39
gender: "M", // 性别为男性
salary: 70000, // 薪资为 70000
married: true, // 已婚状态为真
};
console.log(myObject.name); // 输出:"Jason"
console.log(myObject["name"]); // 输出:"Jason"
console.log(myObject.age); // 输出:39
console.log(myObject.other); // 输出:未定义
console.log(myObject[0]); // 输出:未定义
myObject.name | "Jason" |
myObject["name"] | "Jason" |
myObject.age | 39 |
myObject.other | undefined |
myObject[0] | undefined |
访问嵌套数据
let myObject = {
ref: {
name: 0, // ref 对象中的 name 键为 0
last: 1, // ref 对象中的 last 键为 1
age: 2, // ref 对象中的 age 键为 2
gender: 3, // ref 对象中的 gender 键为 3
salary: 4, // ref 对象中的 salary 键为 4
married: 5, // ref 对象中的 married 键为 5
},
jdoe: ["Jason", "Doe", 39, "M", 70000, true], // jdoe 数组包含 ["Jason", "Doe", 39, "M", 70000, true]
jsmith: ["Tom", "Smith", 42, "F", 80000, true], // jsmith 数组包含 ["Tom", "Smith", 42, "F", 80000, true]
};
console.log(myObject.ref.age); // 输出:2
console.log(myObject["ref"]["age"]); // 输出:2
console.log(myObject.jdoe); // 输出:["Jason", "Doe", 39, "M", 70000, true]
console.log(myObject.jsmith[3]); // 输出:"F"
console.log(myObject[1]); // 输出:未定义
这段代码展示了如何访问嵌套的数据结构,并提供了注释进行语义化的解释。
myObject.ref.age | 2 |
myObject["ref"]["age"] | 2 |
myObject.jdoe | "Jason", "Doe", 39 ... |
myObject.jsmith[3] | "F" |
myObject[1] | undefined |
访问对象数组
let myArray = [
{
name: "Jason",
last: "Doe",
age: 39,
gender: "M",
salary: 70000,
married: true,
},
{
name: "Tom",
last: "Smith",
age: 42,
gender: "F",
salary: 80000,
married: true,
},
{
name: "Amy",
last: "Burnquist",
age: 29,
gender: "F",
salary: 60000,
married: false,
},
];
myArray[0] | { "name": "Jason", ...} |
myArray[1].name | "Tom" |
myArray[1][2] | 42 |
myArray[3] | undefined |
myArray[3].gender | TypeError: Cannot read... |
访问数组
let myArray = ["Jason", "Doe", 39, "M", 70000, true];
| | |
| ------------ | :-------- | -------------------- |
| myArray[1]
| "Doe" | // 下标 1 对应 "Doe" |
| myArray[5]
| true | // 下标 5 对应 true |
| myArray[6]
| undefined | // 下标 6 未定义 |
还可参考
- JSON (json.org)
- JSON 在线编辑器 (jsoneditoronline.org)
- 将 JSON 数组转换为 Markdown 表格、CSV 等 (tableconvert.com)