golang 对json中字段类型不固定的处理

用golang读取一个json,发现有一个字段的值有的是int类型,有的是string类型。

解决思路就是自定义一个类型,然后解析json的时候,自定义函数进行判断。
type StringOrInt string

func (s *StringOrInt) UnmarshalJSON(data []byte) error {

// 尝试解析为字符串
var str string
if err := json.Unmarshal(data, &str); err == nil {
    *s = StringOrInt(str)
    return nil
}

// 尝试解析为数字
var num int
if err := json.Unmarshal(data, &num); err == nil {
    *s = StringOrInt(fmt.Sprintf("%d", num))
    return nil
}

return fmt.Errorf("cannot unmarshal %s into StringOrInt", string(data))

}

type Detail struct {

ID       int                      `json:"id"`
CpId     StringOrInt              `json:"cpId"`

}

评论

(= ̄ω ̄=)··· 暂无内容!

回复

邮箱