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

括号遗漏

最后的逗号

缩进工具