golang / mgo:从插入中省略空字段

时间:2014-09-18 23:06:18

标签: go bson mgo

由于某种原因,mgo将空结构插入db as null值,即使我已设置omitempty选项。

package main

import (
    "fmt"
    "encoding/json"
)

type A struct {
    A bool
}

type B struct {
    X       int `json:"x,omitempty" bson:"x,omitempty"`
    SomeA   *A `json:"a,omitempty" bson:"a,omitempty"`
}

func main() {
    b := B{}
    b.X = 123

    if buf, err := json.MarshalIndent(&b, "", " "); err != nil {
        fmt.Println(err)
    } else {
        fmt.Println(string(buf))
    }
}

json编码器省略了SomeA属性,但在数据库中它只有"a" : null。 我做错了什么,或者根本不可能这样做?

1 个答案:

答案 0 :(得分:8)

是的,所以问题是在json和bson编码器选项之间有选项卡,这就是为什么omitempty不起作用的原因。所以这是错误

SomeA   *A `json:"a,omitempty"         bson:"a,omitempty"`

相反,只需要一个空格,而且全部

SomeA   *A `json:"a,omitempty" bson:"a,omitempty"`