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)封送拆收器(可行,但并非微不足道)。或者,在解码过程之后恢复任何零值可能同样简单