3 回答

TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超10個(gè)贊
由于json響應(yīng)中的字段彼此不同,因此您只需創(chuàng)建一個(gè)具有所有字段并集的結(jié)構(gòu)即可。json解碼器將忽略json字符串中不存在的字段,并且您可以測(cè)試這些字段的存在,以了解要返回的響應(yīng)類型。

TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超8個(gè)贊
我對(duì)此也感到困惑,并以為我必須再次對(duì)其進(jìn)行解碼。不過你沒有。您只需要將interface {}數(shù)據(jù)類型轉(zhuǎn)換為適當(dāng)?shù)慕Y(jié)構(gòu)。
例如,如果JSON包已經(jīng)把值轉(zhuǎn)換成通用的interface{}
,可以強(qiáng)制轉(zhuǎn)換成ErrorType
用error := val.(ErrorType)
。
如果要根據(jù)值的類型進(jìn)行解析,則可以foo.(type)
在switch
語(yǔ)句中使用“做正確的事”。
我本周只學(xué)習(xí)Go,所以它不是最漂亮的代碼,但是geodns JSON配置解析中有一些示例。

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超13個(gè)贊
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 關(guān)注
- 289 瀏覽
添加回答
舉報(bào)