# 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个。那么我们就确定了一个括号不匹配的问题。
接下来,我们可以选择从最外层或最内层向另一个方向一对一对地匹配括号,很容易,我们会发现中间这个结构缺少右花括号:
{
"functions": [
{
"count": {
"max": 1,
"min": 1
},
"function": "set_count"
},
{
"data": 0,
"function": "set_data"
}
],
"name": "test:custom_food",
"type": "item",
"weight": 1
在补上右花括号后,整个JSON重新回到有效状态。
# 最后的逗号
不管是对象还是数组,其内容物都是由一些逗号进行分隔。所以,逗号本质上是分隔符,而不是末尾的定界符。这意味着,不管是对象还是数组,其中最后一个元素的末尾都是不需要加逗号的。但是,由于我们的编写习惯,有些时候还是可能会不自觉在最后一个元素后面添加逗号,因此造成整个JSON解析失败。例如:
{
"name": "小明",
"height": 170,
"weight": 60,
}
我们只需要格外注意最后一个元素,并将其逗号去掉即可,例如:
{
"name": "小明",
"height": 170,
"weight": 60
}
# 缩进工具
大家可以搜索JSON格式化工具、JSON美化工具等关键词,找到一些在线的JSON格式化网页,这些网易能够将你的JSON一件格式化,同时添加合适的缩进,从而更方便大家的JSON数据故障排除。有些工具还能智能地指出一些JSON的错误,直接帮助我们定位到错误行进行故障排除。
如果你使用Visual Studio Code等IDE进行编辑,也可以享受这些IDE自带的错误提示功能,直接找到错误位置进行故障排除。