golang 解析可变类型 json 字段

在接入一些php后台时,可能会遇到返回的json字段类型变化的情况(即字段类型不规范的情况)。 这时候可以选择简单的用interface去解析。 当然,还可以使用json.RawMessage来应对更复杂的情况。

{
"code": 0,
"data": "xxx",
"error": []
}
{
"code": -3031,
"data": "xxx",
"error": {
"code": -3031,
"msg": "密码错误"
}
}

这里error字段其实是可以根据外部code是否为0来判断类型的。

还有一种办法是对error这个struct定义一个Unmarshal方法。

type Error interface{}
func (e Error) Unmarshal() {
}