我正在使用第三方API端点,该端点可以为相同的HTTP状态代码返回两个顶级JSON对象之一。我对目前为止找到的解决方案不满意,所以我想出了使用嵌入式类型的以下解决方案:
type TokenError struct {
Error string `json:"error"`
ErrorDescription string `json:"error_description"`
}
type Token struct {
AccessToken string `json:"access_token"`
ExpiresIn int `json:"expires_in"`
TokenType string `json:"token_type"`
}
type TokenResponse struct {
*TokenError
*Token
}
使用上述类型,我可以进行单一的解组和一些简单的检查:
var tokenResponse TokenResponse
err = json.Unmarshal(body, &tokenResponse)
if err != nil {
fmt.Printf("Error parsing response %+v\n", err)
}
if tokenResponse.TokenError != nil {
fmt.Printf("Error fetching token: %+v\n", tokenResponse.TokenError)
return
}
if tokenResponse.Token != nil {
fmt.Printf("Successfully got token: %+v\n", tokenResponse.Token)
return
}
我想知道以下内容:
TokenResponse
类型...)