2017-01-21 2 views
1

В gobyexample.com/json несколько примеров показывают, как декодировать строку json в типизированные объекты или словарные объекты, объявленные как map[string]interface{}. Но он предполагает, что результатом всегда является словарь.Как определить тип json-объекта в go

Итак, мой вопрос заключается в том, как определить тип объекта json и какова его практика?

ответ

0

Checkout определение 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

Смежные вопросы