2017-01-21 282 views
1

gobyexample.com/json中,有幾個示例顯示如何將json字符串解碼爲類型化對象或字典對象,這些對象聲明爲map[string]interface{}。但它假定結果總是一本字典。如何確定json對象的類型

所以我的問題是如何確定json對象的類型以及處理該對象的最佳做法是什麼?

回答

0

結帳json.Unmarshal的定義:

func Unmarshal(data []byte, v interface{}) error 

那麼至少你可以用反映獲取基礎類型。

var v interface{} 
json.Unmarshal([]byte(JSON_STR), &v) 
fmt.Println(reflect.TypeOf(v), reflect.ValueOf(v)) 

而且switch絕對是一個更好的做法。我想下面的代碼片段

switch result := v.(type) { 
case map[string]interface{}: 
    fmt.Println("dict:", result) 
case []interface{}: 
    fmt.Println("list:", result) 
default: 
    fmt.Println("value:", result) 
} 

基本上能滿足您的要求。

+0

你應該更好地在https://play.golang.org/上提供工作示例 – Altenrion

相關問題