如何用里面的注释解析JSON?

时间:2016-06-11 14:32:15

标签: json go

go中,标准包encoding/json公开了json.Unmarshal函数来解析JSON。

我有一个像这样的JSON:

{
    ...
    "tyo": {
        "ping_only": true,
        "addresses": [
            //"155.133.245.25:27015-27050",
            //"155.133.245.26:27015-27050",
            //"155.133.245.27:27015-27050",
            "45.121.186.20:27015-27016",
            "45.121.186.21:27015-27016"
        ]
    },
    "vie": {
        "addresses": [
            "185.25.182.225:27015-27050",
            "185.25.182.226:27015-27050"
        ]
    },
    ...
}

当我使用json.Unmarshal时出现错误:

  

处理程序崩溃,错误无效字符' /'寻找价值的开端

有人能告诉我如何解析这个吗?

3 个答案:

答案 0 :(得分:6)

严格JSON specification,不允许发表评论。

但是存在JSON的非官方超集允许评论(以及更多其他很酷的事情),例如JSON5HJSON(human-json)。

您可以尝试使用这些Go库:

答案 1 :(得分:1)

是的,这是无效的JSON。

我找到了解决方案:

for _, v:= range s {
    if len(strings.TrimSpace(v)) > 3 {
        if strings.TrimSpace(v)[:1] != "/" {
            t = t + v
        }
    } else {
        t = t + v
    }
}

答案 2 :(得分:-2)

我在go中编写了一个简单的json取消注释器,该注释支持行注释。 在解组之前使用它。

    // f is a raw io.Reader
    newReader := jsonuncommenter.RemoveComment(f)

    jsonParser := json.NewDecoder(newReader)
    var s seeds
    jsonParser.Decode(&s)

https://github.com/wuxiangzhou2010/jsonuncommenter