struct中的空值如何才能不写入MongoDB?

我们知道一个struct中,如果一个field有json:",omitempty"这个tag,那么打包为JSON字符串的时候,空值就自动不打包。

比如:

      type myAccountInfo struct {
          Name    string    `json:",omitempty"`
      }

如果Name == "", 那么打包为JSON字符串的时候,Name就自动不打包。

同理,上述struct写入MongoDB的时候, 如果Name == "", 那么 Name就不写入MongoDB,这该如何实现? 注:使用mgo driver。

共 8 个回复


jimmykuu

bson也支持这个标签

type myAccountInfo struct {
    Name    string    `bson:",omitempty"`
}
# 0

qkevin123

对了,如何把一个struct中的值强制不输出到JSON中?

 type myAccountInfo struct {
        Name string `json:",omit"`
}

json:",omit"这个tag貌似不好使?

# 2

jimmykuu

忽略是json:"-"

# 3

qkevin123

Great, many thanks.

# 4

chris

那如果json和bson同时使用呢,也就是说一个字段能使用两个标签吗

这么写:

type FooModel struct {
    Foo bool `bson:",omitempty" json:"jsonkey"`
}
# 5

chris

https://godoc.org/gopkg.in/mgo.v2/bson

type T struct {
    A bool
    B int    "myb"
    C string "myc,omitempty"
    D string `bson:",omitempty" json:"jsonkey"`
    E int64  ",minsize"
    F int64  "myf,omitempty,minsize"
}

这里面没有指明bson或者json的flag(BCEF),会自动应用到bson和json?

# 6

wangxufire

Name string json:"name" ",omitempty"

可以有两个值吗

# 7