java json大文件解析-java解析json文件工具
原始JSON文本(Raw JSON Text)是Minecraft用于给玩家发送并显示富文本的格式,它也可以通过命令和数据包发送。原始JSON文本使用JSON编写。
Java版
原始JSON文本由聊天组件组成。结构本身只有一个根对象,但这个根对象可包含有子对象,而这些子对象也可以有自己的子对象,依此类推。对象可以包含格式和交互事件,这些也会应用到他们的子对象上。
聊天组件的格式可以是JSON字符串、JSON数组或JSON对象。字符串和数组用于简写较长的对象,见下文所述。
聊天组件内存在的数值和布尔值将会视为字符串处理。
内容:记分板的值(需要解析)score:显示一个持有者在指定记分项下当前的分数。若指定持有者或记分项不存在,或持有者未被记分项追踪则不会显示任何内容。内容:实体名称(需要解析)selector:包含目标选择器的字符串,显示被选中玩家和实体的名称。若选择器发现了多个实体,则会显示所有被选中的实体的名称,用半角逗号分隔。悬浮在名称上时会显示包含名称、类型和UUID的工具提示;点击一个玩家的名称会出现私信该玩家的命令建议;按住⇧ Shift点击玩家名称会将其名称填入聊天框中;按住⇧ Shift点击非玩家实体的名称会将其UUID填入聊天框中。内容:按键键位keybind:包含键位标识符的字符串java json大文件解析,会显示某操作当前绑定的按钮的名称。例如java json大文件解析,若使用默认配置,{"keybind": "key.inventory"}将显示“e”。内容:NBT的值(需要解析)nbt:包含一段NBT路径的字符串,用于从实体、方块或存储处查找指定NBT数据标签的值。若值为字符串,则显示它的内容;其他值将显示为SNBT,没有空格和换行符。若值为聊天组件,显示方式受interpret影响。若发现多个值(通常由选择了多个对象或路径会选择多个值造成),则会显示所有值,之间用半角逗号分隔。
需要同时存在block、entity或storage。含有多个组件是允许的,但只会有一个生效。[5]interpret:可选,默认为“false”。若指定为“true”,则会尝试将获取到的每个值视为原始JSON文本聊天组件并解析。若解析失败,则不会显示任何内容。不存在nbt时忽略。block:指定要获取NBT数据标签的方块实体的坐标。坐标可以是绝对坐标或相对坐标。不存在nbt时忽略。entity:以目标选择器的形式指定要获取NBT数据标签的实体。不存在nbt时忽略。storage:指定要获取NBT数据标签的命令存储的命名空间ID。不存在nbt时忽略。子对象extra:包含在文本之后显示的附加原始JSON文本对象的列表。格式color:可选,渲染文字时使用的颜色。有效值有:black、dark_blue、dark_green、dark_aqua、dark_red、dark_purple、gold、gray、dark_gray、blue、green、aqua、red、light_purple、yellow、white和reset(取消父对象使用的颜色效果)。
设置为"#"将会使用以6位十六进制颜色格式定义的颜色。bold:可选。是否将文字渲染为粗体。italic:可选。是否将文字渲染为斜体。原本为斜体的自定义物品名称也可以通过将此值设置为“false”来取消斜体。underlined:可选。是否为文字附加下划线。strikethrough:可选。是否为文字附加删除线。obfuscated:可选。是否将文字模糊处理。font:可选。使用在assets//font里定义的字体渲染文本。默认为minecraft:default。separator[新增:1.17]:可选。替换在显示多个值时使用的符号(默认为“,”)。可以为字符串或另一个聊天组件。交互事件insertion:可选。当玩家按住⇧ Shift并点击文字时,此组件指定的字符串会自动填入聊天框中,不会覆盖原有的文字。仅在聊天页面中生效。clickEvent:可选。允许在玩家点击文字时产生事件。若无附加说明,仅在聊天页面和成书中生效。value:指定的URL、文件路径、信息、命令或页码。hoverEvent:可选。允许在玩家将鼠标指针悬浮在文字之上时显示提示文字。value:此标签的格式取决于action的值。不推荐使用,请使用contents代替。contents:此标签的格式取决于action的值。“show_entity”:将要显示的实体。
由于extra标签的存在,以上格式可递归嵌套成非常复杂与多样的字符串。然而,JSON文本不必弄得如此复杂:几乎所有的属性都是可选的。
解析组件
部分组件(“score”、“selector”和“nbt”)不会一直存在于对象中。这些内容会被解析:从世界中取得指定数据后将会把数据转化为文本组件,之后用这个转化后的组件替换原来的组件。解析会通过告示牌、第一次打开成书和使用命令完成。它也可以通过战利品表函数“set_name”和“set_lore”完成。在自定义名称中不会自行解析这些组件。
此外,解析会固定获取的值。因此,这些组件的内容不再变化,也不会因环境的变化而调整相应值。
基岩版
与Java版不同,基岩版里的原始JSON文本更为简单且严格。
score