「Minecraft指令手册」

第121章JSON的格式

上一章 简介 下一章

看来JSON不先讲完那是不行的,那么我们就先把JSON讲完吧。

JSON的格式相信大家在第二卷时就已经知道了个大概,即:

{元素:值}(1.9版本以前)

{“元素“:值}(1.9版本即以后)

其中,值可能是字符串、数字、布尔值等奇奇怪怪的东西,有些要加引号(比如字符串),有些不需要加引号。

但是其实JSON还带有另一种格式,这种格式它并不是用大括号包起来的,而是用中括号,即:

[对元素:值](1.9版本以前)

[“元素“:值](1.9版本以后)

你可能会问:哎这两种格式不是一模一样吗?

其实是不一样的,不一样的地方就在于前者有多个对象时只能:

{“text“:“我的天淦***“,“lor“:“red“}

或者是{“text“:“我的天“,“lor“:“red“,“extra“:[{“text“:“淦“},{“text“:“***“}]}

而后者却可以这样子:

[{“text“:“我的天“,“lor“:“red“},“淦“,“***“

或者是

[{“text“:“我的天“,“lor“:“red“},{“text“:“淦“},{“text“:“***“}

都可以达到上面大括号的效果。

这是为什么呢?

其实中括号就相当于把大括号里元素extra给独立出来一个格式,而extra就是一个JSON列表,这后面会讲到。

所以中括号虽然能把元素给拆分成一段一段的列表,但无法像大括号一样直接列出来,比如上面的:

{“text“:“我的天“,“lor“:“red“,“text“:“淦“,“text“:“***“}

如果把{}换成

就不行了,就会报错。想让其不报错只能拆成一段一段的列表。

而且实际上JSON的全格式就是中括号,大括号格式只不过是从中括号里面拆出来的。

其实中括号这个格式没有你们想象的那么简单,注意到上面的中括号第一个例子中的“淦“和“***“了吗?它们并没有被加上“text“。

但他们确实就是text。

这是为什么?其实这就是一种偷懒的方法。

因为JSON最常用的就是text元素,所以JSON的作者就觉得这么多text看着太眼花缭乱。就简化了。

但是这种简化只能在中括号格式里用,大括号里不能用。

这又是为什么?

其实在JSON里,被大括号包起来的整个就是一个对象。所以大括号格式本身就只有一个对象。

而中括号格式里可以放很多个大括号,所以中括号里可以有很多个对象。

而上面这种简化方式,它简化后就变成了一个对象,因为它不能再添加其他的比如lor的参数,自然就不能在大括号里放了,只能在中括号放。

(所以这种简化方式不止是删了text,还删除了大括号?)

(没错,所以就更不可能在大括号里放了,不然就会变成大括号里再套大括号,格式就不对了)

既然这种简化方式本身并不能添加参数,那么如果要修改颜色该怎么办?

这就要说到对象的类别了。

在JSON列表里(就是上面说的中括号格式),从左往右数的第一个对象其中的参数会影响其余的所有对象,所以我们通常把第一个对象叫做父对象,而其余的对象叫做子对象。

这个名称取得很符合现实,毕竟现实中也是会基因遗传的嘛。

当然,和现实一样,子对象也可以通过额外添加参数来改变自己,当然父对象遗传下来的参数没有被改变的话仍然是留在那里的。(注意,改变单个子对象的参数并不会改变后面全部子对象的参数看,因为这些子对象都是同级的。如果想改变单个子对象并同时改变后面的子对象,只能把后面的子对象全部变成该子对象的子对象,即孙子对象)

所以你可以通过在父对象就设置好参数,然后在子对象里写简化的文本,比如:

[{“text“:““,“lor“:“red“},“淦“}

但需要注意的一点是,列表里的每一个对象里都必须要有一个显示内容的元素,比如text或sre。当然你也可以将元素留空,这样子就不会出现任何的其他文本了。

(额,这样子直接把第二个对象的内容写在第一个对象里不好吗.......)

对哦,这样子更省事唉。

这些就是JSON的格式了。

阅读Minecraft指令手册最新章节 请关注侠客小说网(www.tcknh.com)

上一章 目录 下一章 收藏

阅读推荐

Minecraft指令手册