组合后的json,匿名字段的jsonTag怎么恢复成原结构体的tag?

type TestA struct {
    A *string `json:"AA,omitempty"`
}

type TestB struct {
    *TestA `json:",inline"`
    B *string `json:"BB,omitempty"`
}

我有两个结构体,在初始化TestB后

func NewString(s string) *string {
    return &s
}

t := &TestB{
   TestA: &TestA{
      A: NewString("a"),
  },
  B: NewString("b"),
}

初始化完成后,我想要获取AA和BB两个字段的jsonTag

    y := reflect.TypeOf(t)
    if y.Kind() == reflect.Ptr {
        y = y.Elem()
    }
    fieldNum := y.NumField()
    for i := 0; i < fieldNum; i++ {
        jsonTag := y.Field(i).Tag.Get("json")
        fmt.Println(jsonTag)
    }

输出结果为

,inline
BB,omitempty

而我想要得到的结果为

AA,omitempty
BB,omitempty

请问有什么办法可以实现我这个需求

讨论数量: 1

把继承那的换成这样写吧

type TestB struct {
    *TestA
    B *string `json:"BB,omitempty"`
}
3年前 评论
LockWithoutKey (楼主) 3年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!