From d428146a87ddb38f3162ce7e6d6b356094cf4df1 Mon Sep 17 00:00:00 2001 From: jaywcjlove <398188662@qq.com> Date: Mon, 26 Sep 2022 20:41:46 +0800 Subject: [PATCH] feat: add `json` cheatsheet. --- docs/json.md | 346 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 346 insertions(+) create mode 100644 docs/json.md diff --git a/docs/json.md b/docs/json.md new file mode 100644 index 0000000..d43af37 --- /dev/null +++ b/docs/json.md @@ -0,0 +1,346 @@ +JSON +=== + +这是理解和编写 JSON 格式配置文件的快速参考备忘单。 + +入门 +---- + +### 介绍 + +[JSON](https://json.org/) 是一种基于文本的轻量级开放标准,专为人类可读的数据交换而设计。 + +- JSON 代表 JavaScript 对象表示法 +- JSON 易于读写。 +- JSON 是与语言无关的数据交换格式 +- JSON 文件扩展名为 `.json` +- JSON Internet 媒体类型为 `application/json` + +### 示例 + +```json +{ + "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` | Null 或 Empty | + + +### 字符串 + + + +| | | +|------|----------------------------| +| `\"` | 双引号 Double quote | +| `\\` | 反斜杠 Backslash | +| `\/` | 正斜杠 Forward slash | +| `\b` | 退格 Backspace | +| `\f` | 换页 Form feed | +| `\n` | 换行 Newline | +| `\r` | 回车 Carriage return | +| `\t` | 标签 Tab | +| `\u` | 后跟四个十六进制数字 | + + +#### 示例 + +```json +{ + "url": "https://quickref.me", + "msg" : "Hi,\n\"QuickRef.ME\"", + "intro": "Share quick reference and cheat sheet for developers." +} +``` + +#### 无效字符串 + +```json +{ "foo": 'bar' } +``` +Have to be delimited by double quotes + + +### 数字 + + + +| Type | Description | +|------------|----------------------------------------| +| `Integer` | Digits 1-9, 0 and positive or negative | +| `Fraction` | Fractions like 0.3, 3.9 | +| `Exponent` | Exponent like e, e+, e-, E, E+, E | + +#### 示例 + +```json +{ + "positive" : 12, + "negative" : -1, + "fraction" : 10.25, + "exponent" : 1.0E+2, + "zero" : 0 +} +``` + +#### 无效的数字 + +```json +{ "foo": 0xFF } +``` + +在JSON中,只能使用十进制文字 + +### 对象 Objects + +```json +{ + "color": "Purple", + "id": "210", + "composition": { + "R": 70, + "G": 39, + "B": 89 + }, + "empty_object": {} +} +``` + +用逗号分隔的多个键/值对 + +### 数组 Arrays + +```json +[1, 2, 3, 4, 5] +``` + +以 `[` 开始并以 `]` 结束 + +### 对象数组 + +```json +{ + "children": [ + { "name": "Jimmy Smith", "age": 15 }, + { "name": "Sammy Sosa", "age": 12 } + ] +} +``` + +### 数组对象 + +```json +{ + "attributes": ["a1", "a2"], + "methods": ["getter", "setter"], + "empty_array": [] +} +``` + +### 二维阵列 + +```json +{ + "my_sequences": [ + [1, 2, 3], + [4, 5, 6], + [7, 8, 9, 0], + [10, 11] + ] +} +``` + +### 对象的对象 + +```json +{ + "Mark McGwire": { + "hr": 65, + "avg": 0.278 + }, + "Sammy Sosa": { + "hr": 63, + "avg": 0.288 + } +} +``` + +### 嵌套 + +```json +{ + "Jack": { + "id": 1, + "name": "Franc", + "salary": 25000, + "hobby": ["a", "b"], + "location": { + "country": "A", "city": "A-A" + } + } +} +``` + +在 JavaScript 中访问 JSON +---- + +### 访问对象 + +```javascript +let myObject = { + "name": "Jason", + "last": "Doe", + "age": 39, + "gender": "M", + "salary": 70000, + "married": true +}; +``` + +---- + +| | | +|--------------------|-----------| +| `myObject.name` | "Jason" | +| `myObject["name"]` | "Jason" | +| `myObject.age` | 39 | +| `myObject.other` | undefined | +| `myObject[0]` | undefined | + + +### 访问嵌套 + + + +```javascript +let myObject = { + "ref": { + "name": 0, + "last": 1, + "age": 2, + "gender": 3, + "salary": 4, + "married": 5 + }, + "jdoe": [ + "Jason", + "Doe", + 39, + "M", + 70000, + true + ], + "jsmith": [ + "Tom", + "Smith", + 42, + "F", + 80000, + true + ] +}; +``` + +---- + +| | | +|--------------------------|--------------------------| +| `myObject.ref.age` | 2 | +| `myObject["ref"]["age"]` | 2 | +| `myObject.jdoe` | ["Jason", "Doe", 39 ...] | +| `myObject.jsmith[3]` | "F" | +| `myObject[1]` | undefined | + + +### 访问对象数组 + + + +```javascript +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... | + + +### 访问阵列 + +```javascript +let myArray = [ + "Jason", + "Doe", + 39, + "M", + 70000, + true +]; +``` + +----- + +| | | +|--------------|-----------| +| `myArray[1]` | "Doe" | +| `myArray[5]` | true | +| `myArray[6]` | undefined | + + + +另见 +---- + +- [JSON](https://www.json.org/json-en.html) _(json.org)_ +- [JSON Editor Online](http://jsoneditoronline.org/) _(jsoneditoronline.org)_ +- [Convert JSON Array to Markdown Table, CSV and more](https://tableconvert.com/json-to-markdown) _(tableconvert.com)_ \ No newline at end of file