2 回答

TA貢獻1773條經驗 獲得超3個贊
對于 JSON,將數據解組為一個interface{}值。使用類型斷言來確定值中的內容。
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貢獻1865條經驗 獲得超7個贊
在 JSON 的情況下,json.Unmarshal
如果您愿意,標準庫函數將解組任意 JSON,如果您將指針傳遞給未初始化的空接口。(見這個例子。)
官方文檔甚至說了這么多:
為了將 JSON 解組為接口值,Unmarshal 將其中一項存儲在接口值中:
bool,用于 JSON 布爾值
float64,用于 JSON 數字
字符串,用于 JSON 字符串
[]interface{},用于 JSON 數組
map[string]interface{},用于 JSON 對象
無 JSON null
編輯:雖然沒有記錄,但yaml包也是如此;我在我的工作站上進行了測試,傳入一個指向未初始化的空接口的指針會導致正確的數組、映射和原語的初始化。
- 2 回答
- 0 關注
- 192 瀏覽
添加回答
舉報