2 回答

TA貢獻(xiàn)1773條經(jīng)驗(yàn) 獲得超3個(gè)贊
對(duì)于 JSON,將數(shù)據(jù)解組為一個(gè)interface{}值。使用類(lèi)型斷言來(lái)確定值中的內(nèi)容。
var v interface{}
err := json.Unmarshal(data, &v)
if err != nil {
// handle error
}
switch v := v.(type) {
case string:
fmt.Println("string:", v)
case float64:
fmt.Println("number:", v)
case []interface{}:
fmt.Println("array:", v)
case map[string]interface{}:
fmt.Println("object:", v)
case nil:
fmt.Println("nil")
}

TA貢獻(xiàn)1865條經(jīng)驗(yàn) 獲得超7個(gè)贊
在 JSON 的情況下,json.Unmarshal
如果您愿意,標(biāo)準(zhǔn)庫(kù)函數(shù)將解組任意 JSON,如果您將指針傳遞給未初始化的空接口。(見(jiàn)這個(gè)例子。)
官方文檔甚至說(shuō)了這么多:
為了將 JSON 解組為接口值,Unmarshal 將其中一項(xiàng)存儲(chǔ)在接口值中:
bool,用于 JSON 布爾值
float64,用于 JSON 數(shù)字
字符串,用于 JSON 字符串
[]interface{},用于 JSON 數(shù)組
map[string]interface{},用于 JSON 對(duì)象
無(wú) JSON null
編輯:雖然沒(méi)有記錄,但yaml包也是如此;我在我的工作站上進(jìn)行了測(cè)試,傳入一個(gè)指向未初始化的空接口的指針會(huì)導(dǎo)致正確的數(shù)組、映射和原語(yǔ)的初始化。
- 2 回答
- 0 關(guān)注
- 185 瀏覽
添加回答
舉報(bào)