我一直在阅读许多相关的问题,但是找不到真正适合我问题的内容。我正在尝试解组复杂的对象。
type DC struct {
//other fields
ReplenishmentData map[string]ProductReplenishment `bson:"-"`
//other fields
}
type ProductReplenishment struct {
//Other fields
SafetyStockInDay int `json:"SafetyStockInDay" bson:"SafetyStockInDay"`
AlreadyOrderedQuantityForReplenishment *map[float64]*UnitQuantity `json:"-" bson:"-"`
//Other fields
}
让我们说我解码以下json:
{
"ReplenishmentData": {
"000822-099": {
"SafetyStockInDay": 7
},
"001030-001": {
"SafetyStockInDay": 7
}
}
}
进入一个结构实例层次结构,其中AlreadyOrderedQuantityForReplenishment不为空,在解码后,此字段将被设置为和空映射,覆盖初始值。
为什么解码器不完全忽略文档中指定的字段?我想念什么吗?
非常感谢您的帮助,
(如果有帮助)在(第一)之前(第二)之后添加检查器的屏幕截图
答案 0 :(得分:0)
您的问题与嵌入式结构无关-常规结构也会发生相同的问题。
编码器将跳过使用标记限定符"-"
标记的编码结构字段。
解码器在初始化结构时,对于未通过解码过程初始化的任何字段,都将使用零值。因此,您的地图将被初始化为nil(空)地图。
如果要保留设置,则需要编写自己的(JSON或BSON)封送处理程序(可行-但不平凡)。或者,在解码过程之后恢复所有零值可能更简单。