json忽略标记(";-";)不适用于嵌入式子结构
我已经阅读了很多相关的问题,但找不到任何真正适合我的问题。我试图解开一个复杂的物体json忽略标记(";-";)不适用于嵌入式子结构,json,go,nested,tags,unmarshalling,Json,Go,Nested,Tags,Unmarshalling,我已经阅读了很多相关的问题,但找不到任何真正适合我的问题。我试图解开一个复杂的物体 type DC struct { //other fields ReplenishmentData map[string]ProductReplenishment `bson:"-"` //other fields } type ProductReplenishment struct { //Other fields SafetyStockInDay int `json
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
}
}
}
进入结构实例层次结构,其中AlReadyOrderedQuantityForRequirement不为空,解码后此字段将设置为和空映射,覆盖初始值
为什么解码器不能按照文档中的规定忽略所有字段?我错过什么了吗
非常感谢你的帮助
如果可以的话,在(第一次)/之后(第二次)添加检查员的屏幕截图
您的问题与嵌入式结构无关-常规结构也会出现同样的问题 编码器将跳过标记有标记限定符
“-”
的编码结构字段。
解码器在初始化结构时,将对任何未通过解码过程初始化的字段使用零值。因此,您的映射将被初始化为零(空)映射
如果您想保留设置,您需要编写自己的(JSON或BSON)封送拆收器(可行,但并非微不足道)。或者,在解码过程之后恢复任何零值可能同样简单