# 数据结构初步 在本章中,我们将全面地了解JSON文件的数据结构。JSON是一种用于存储和交换信息的通用格式,也是我们在《我的世界》附加包中最常接触到的一种文件格式。充分了解这种文件格式有助于我们在编写附加包的过程中得到更加轻松的体验,避免因单纯的语法错误导致不必要的时间损失。 ## JSON **JSON**全称JavaScript Object Notation,译为**JavaScript对象表示法**或**JavaScript对象简谱**,念作/ˈdʒeɪsən/或/ˈdʒeɪˌsɒn/。最开始,这种文件格式析取自一种名为JavaScript的程序语言,随着人们发现这种数据格式清晰简洁,非常适合作为一种理想的数据交换语言使用,这种文件格式逐渐脱离了JavaScript,成为了在计算机科学的各处各地都得到了广泛应用的一种轻量数据交换格式。 首先,我们观察一个使用了JSON文件格式的示例。这是一个附加包中最基本的文件——清单文件的示例: ```json { "format_version": 2, "header": { "description": "resourcePack.vanilla.description", "name": "resourcePack.vanilla.name", "uuid": "0575c61f-a5da-4b7f-9961-ffda2908861e", "version": [0, 0, 1], "min_engine_version": [1, 13, 0] }, "modules": [ { "description": "resourcePack.vanilla.description", "type": "resources", "uuid": "53644fac-a276-42e5-843f-a3c6f169a9ab", "version": [0, 0, 1] } ] } ``` 我们此时并不考虑该文件的功能,我们仅使用该文件作为JSON格式学习的示例。我们可以看到,该文件有如下基本结构: - 整个文本以左花括号`{`开头,以右花括号`}`结尾。 - 文本中可以看到典型的`"冒号前一些东西": 冒号后一些东西`的结构,我们称这种结构为一个**字段**(**Field**)。 - 有一些字段后面还有一个英文逗号`,`。 - 在一个字段中,“冒号前一些东西”我们称之为**键**(**Key**),“冒号后一些东西”我们称之为**值**(**Value**)。每个字段的键都是用英文的直引号`"`括起来的,但是一个字段值是多种多样的,我们可以看到有数字作为值,有和键一样用英文直引号`"`括起来的内容作为值,也有以左花括号`{`开头,中间又是一堆东西,然后以右花括号`}`结尾,或以左方括号`[`开头,中间一些东西,然后以右方括号`]`结尾的内容作为值。 有了上述观察,我们不免产生一些疑问,花括号`{}`括起来的东西是什么?为什么要用`"键": 值`这种被称为字段的结构?到底哪些字段后面会存在英文逗号`,`,哪些不存在?键和值都遵循什么规则,都允许存在什么样的形式?在后面的章节中,我们来一一解答这些问题。