如何在带标签的Go中解组/ Marshall JSON?

时间:2014-09-19 00:09:58

标签: json go

JSON对象:

{  
"foo_bar": "content"  
}

代码:

type PrettyStruct struct {
    Foo       string  `json: "foo_bar"`
}

func whatever(r *http.Request) {
    var req PrettyStruct

    if err := json.NewDecoder(r.Body).Decode(&req); err != nil {
        // ...
    }

    log.Println(req)
}

这简单地输出:

{}  

Go在解码JSON对象时没有考虑我的标签,因此没有任何内容被解组到结构中,并且每个字段都保持零值。
如果在JSON对象中,该字段被称为“foo”或“Foo”,则一切正常。

我尝试过简单标记"foo_bar"以及以下变体`json: foo_bar`"json: foo_bar"

虽然我做错了什么?

1 个答案:

答案 0 :(得分:1)

很愚蠢..但冒号和"foo_bar"之间的空间是个问题。试试这个:

type PrettyStruct struct {
    Foo       string  `json:"foo_bar"`
    //                     ^^^ no space here
}

在操场上的工作示例:http://play.golang.org/p/dEc_c0UAOC