如何解析带有注释的 JSON?

在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我得到错误:


处理程序因错误无效字符“/”而崩溃,正在寻找值的开头


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


回首忆惘然
浏览 265回答 3
3回答

jeck猫

严格的JSON 规范,不允许评论。但是存在允许评论(以及更多其他很酷的东西)的非官方 JSON 超集,例如JSON5或HJSON(human-json)。你可以试试这些 Go 库:JSON5:https ://github.com/yosuke-furukawa/json5HJSON:https ://github.com/client9/xson/tree/master/hjson

当年话下

是的,这是无效的 JSON。我找到了一个解决方案:for _, v:= range s {    if len(strings.TrimSpace(v)) > 3 {        if strings.TrimSpace(v)[:1] != "/" {            t = t + v        }    } else {        t = t + v    }}

一只萌萌小番薯

我在支持行注释中写了一个简单的 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
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go