导入JSON时如何省略字段?

时间:2015-04-20 00:13:11

标签: json go

如何将json解组为Go结构并省略特定字段? The docs我可以使用json: "-"标记字段以省略它,但这似乎没有做任何事情:

package main

import (
    "encoding/json"
    "fmt"
)

var data = []byte(`{"bar": true, "baz": true}`)

type Foo struct {
    Bar bool `json: "bar"`
    Baz bool `json: "-"`
}

func main() {
    var foo Foo
    json.Unmarshal(data, &foo)

    fmt.Println(foo)
}

打印{true, true}

如果使用Baz标记json: "-"字段,我希望{true, false}能够打印。出了什么问题?

Go Playground link

2 个答案:

答案 0 :(得分:4)

空间似乎很重要:

Baz bool `json:"-"`

打印:

{true false}

Go

答案 1 :(得分:1)

另一个选项是to not export要省略的字段。请注意结构定义中的小写baz

package main

import (
    "encoding/json"
    "fmt"
)

var data = []byte(`{"bar": true, "baz": true}`)

type Foo struct {
    Bar bool
    baz bool
}

func main() {
    var foo Foo
    json.Unmarshal(data, &foo)

    fmt.Println(foo)
}

打印

{true false}

GO