3 回答
TA贡献1802条经验 获得超10个赞
由于json响应中的字段彼此不同,因此您只需创建一个具有所有字段并集的结构即可。json解码器将忽略json字符串中不存在的字段,并且您可以测试这些字段的存在,以了解要返回的响应类型。
TA贡献1804条经验 获得超8个赞
我对此也感到困惑,并以为我必须再次对其进行解码。不过你没有。您只需要将interface {}数据类型转换为适当的结构。
例如,如果JSON包已经把值转换成通用的interface{}
,可以强制转换成ErrorType
用error := val.(ErrorType)
。
如果要根据值的类型进行解析,则可以foo.(type)
在switch
语句中使用“做正确的事”。
我本周只学习Go,所以它不是最漂亮的代码,但是geodns JSON配置解析中有一些示例。
TA贡献1828条经验 获得超13个赞
type Response struct {
Kind string
Id string
LongUrl string
Error struct {
Errors []struct {
Domain string
Reason string
Message string
LocationType string
Location string
}
Code int
Message string
}
}
s := Response{}
if err := json.Unmarshal(blob, &s); err == nil {
if s.Error == nil {
// success
} else {
// error
}
} else {
// something went wrong
}
- 3 回答
- 0 关注
- 245 浏览
添加回答
举报