gpt4 book ai didi

戈朗/mgo : leave out empty fields from insert

转载 作者:IT王子 更新时间:2023-10-29 00:52:37 25 4
gpt4 key购买 nike

出于某种原因,即使我设置了 omitempty 选项,mgo 仍将空结构作为空值插入到数据库中。

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 存在。我做错了什么,还是根本不可能这样做?

最佳答案

是的,所以问题是在 json 和 bson 编码器选项之间有制表符,这就是 omitempty 不起作用的原因。所以这是错误的:

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

取而代之的是只有一个空格,这一切都:

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

关于戈朗/mgo : leave out empty fields from insert,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25923861/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com