93 lines
3.7 KiB
Markdown
93 lines
3.7 KiB
Markdown
# 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自带的错误提示功能,直接找到错误位置进行故障排除。
|