Files
netease-bedrock-wiki/docs/netease-tutorial-103.4-main/4-JSON故障排除示例及方法.md
2024-11-06 15:38:59 +08:00

93 lines
3.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# JSON故障排除示例及方法
在编写JSON的过程中由于JSON的严谨格式导致开发者经常会出现不小心就将JSON文件无效化的行为。在本节中我们举几个常见的错误编写示例并给出排除方法。
## 括号遗漏
JSON中的对象的花括号和数组的方括号都是成对出现的如果只出现一边而没有出现另一边便会导致JSON读取错误。虽说良好的缩进习惯可以帮助我们排除括号数量的问题但还是可能会出现一些意想不到的括号错误。例如
```json
{
"pools": [
{
"entries": [
{
"functions": [
{
"count": {
"max": 1,
"min": 1
},
"function": "set_count"
},
{
"data": 0,
"function": "set_data"
}
],
"name": "test:custom_food",
"type": "item",
"weight": 1
],
"rolls": 1
}
]
}
```
你能很快地定位到上述文件中遗漏的一个括号在哪里吗?相比这也是需要些许时间的。当文件内容更多时,一个括号的错误往往会更难排除。
排除括号的最简单的方法就是数括号的数量因为有一个左括号就必定有一个右括号。首先我们数左花括号的数量共有6个。然后数右花括号的数量却发现只有5个。那么我们就确定了一个括号不匹配的问题。
接下来,我们可以选择从最外层或最内层向另一个方向一对一对地匹配括号,很容易,我们会发现中间这个结构缺少右花括号:
```json
{
"functions": [
{
"count": {
"max": 1,
"min": 1
},
"function": "set_count"
},
{
"data": 0,
"function": "set_data"
}
],
"name": "test:custom_food",
"type": "item",
"weight": 1
```
在补上右花括号后整个JSON重新回到有效状态。
## 最后的逗号
不管是对象还是数组其内容物都是由一些逗号进行分隔。所以逗号本质上是分隔符而不是末尾的定界符。这意味着不管是对象还是数组其中最后一个元素的末尾都是不需要加逗号的。但是由于我们的编写习惯有些时候还是可能会不自觉在最后一个元素后面添加逗号因此造成整个JSON解析失败。例如
```json
{
"name": "小明",
"height": 170,
"weight": 60,
}
```
我们只需要格外注意最后一个元素,并将其逗号去掉即可,例如:
```json
{
"name": "小明",
"height": 170,
"weight": 60
}
```
## 缩进工具
大家可以搜索JSON格式化工具、JSON美化工具等关键词找到一些在线的JSON格式化网页这些网易能够将你的JSON一件格式化同时添加合适的缩进从而更方便大家的JSON数据故障排除。有些工具还能智能地指出一些JSON的错误直接帮助我们定位到错误行进行故障排除。
如果你使用Visual Studio Code等IDE进行编辑也可以享受这些IDE自带的错误提示功能直接找到错误位置进行故障排除。