首页 男生 游戏竞技 Minecraft指令手册

第一百二十一章 JSON的格式

Minecraft指令手册 你好MC 1978 2024-07-09 15:29

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

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

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

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

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

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

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

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

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

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

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

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

  而后者却可以这样子:

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

  或者是

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

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

  这是为什么呢?

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

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

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

  如果把{}换成[]就不行了,就会报错。想让其不报错只能拆成一段一段的列表。

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

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

  但他们确实就是text。

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

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

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

  这又是为什么?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  对哦,这样子更省事唉。

  这些就是JSON的格式了。

目录
设置
手机
书架
书页
评论