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 關注
- 281 瀏覽
添加回答
舉報