🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# JSON概观 ## 简介 什么是JSON?引用术语来说 > JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。 易于人阅读和编写。同时也易于机器解析和生成。 它基于JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript等)。 这些特性使JSON成为理想的数据交换语言 简单来说 > JSON就是一种易于阅读以及交换信息的语言格式 而Minecraft也看中了JSON这种便于阅读及读取的格式,以JSON格式来定义不同功能。 这里我们将会介绍JSON文本,这是一个经常用于各种命令的格式。 首先我们需要学习JSON的基本格式。 ## 格式 首先,JSON标准的格式为 `"[名称]": [值]` 值可以为一个数值,布尔值等 例如: ``` "Number":1 "Answer":true ``` 对字符串来说,值需要被双引号括起来,即 `"[名称]":"[值]"` 例如: ``` "Name":"SYL" ``` --- 如果是描述一个对象的话,把内容书写在花括号`{}`中,以`,`分隔内容 例如: ``` {"Name":"SYL","Gender":"Male"} ``` 这里表达了名为SYL,性别为男的意思 --- 如果是一个集合/数组,那么用`[]`把对象括起来 例如: ``` {"CBL":[{"Name":"SYL","Gender":"Male"},{"Name":"Woody_Mo","Gender":"Male"}]} ``` 这里描述了名为CBL的集合,包含了SYL和Woody_Mo这两个对象 ## 转义 转义是JSON应用中十分重要的课题。在此我们只会大约说明转义的用法,详细例子将会在之后章节给出例子。 当我们在字符串里使用某些特别的字符,如`"`字符的时候,情况会变得稍微复杂。举个例子 ``` "abc":"这个JSON的名称为"abc"" ``` 就我们现在所学,`"`字符代表的是字串的开始和结尾啊!这样的话哪个`"`字符是开始哪个才是结束? 答案是:没人知道。我们不能这么写JSON的。 > 如果我们要在字串里填写一些特殊符号,我们需要对它们进行转义(escape) > 转义即在**特殊字符前方**加入一个名为**转义字符**的字符,表示这个字符和原来的意思不同。(当作普通字符处理) > 在JSON里,转义字符为`\`,而需要转义的特殊字符为`\`及`"` (为何转义字符也需要转义?因为它独自出现的时候代表的是转义,而不是一个普通字符。因此当我们需要在文本内使用此字符时需要将其转义。) 以上方的例子来说,我们希望abc的数值为`这个JSON的名称为"abc"`,因此我们会这么写: ``` "abc":"这个JSON的名称为\"abc\"" ``` 如果我们要一个数值为上方这JSON字串的JSON呢?我们需要这么写: ``` "foo":"\"abc\":\"这个JSON的名称为\\\"abc\\\"\"" ``` > 注意: > 转义本来是没有"多重转义"的概念的。转义是一层一层,每次在`\`及`"`符号前方加入`\`字符。 > 记住这个最基本的原则可以避免出现错误 # JSON文本 在MC里面,目前用到JSON文本(Text component)的地方有5个,`/tellraw`,`/title`,`告示牌`,`成书`以及`advancement`,用于记录文字的样式和功能。 比起传统的`/say`,JSON可以自由编辑样式,甚至提供了交互功能,所以很适合作为信息输出/用户交互界面 其中最基本的概念是 每一段文字被视作为一个**对象**,由`{}`括起来 对象内可设置**属性**,决定了文字的内容,样式,功能等等 以下章节将一步步解释JSON在游戏内的应用