Я пытаюсь демонтировать JSON-объект, который имеет необязательный массив, я делаю это без массива, и вот что я получил до сих пор:
import (
"encoding/json"
"fmt"
)
func main() {
jo := `
{
"given_name": "Akshay Raj",
"name": "Akshay",
"country": "New Zealand",
"family_name": "Gollahalli",
"emails": [
"name@example.com"
]
}
`
var raw map[string]interface{}
err := json.Unmarshal([]byte(jo), &raw)
if err != nil {
panic(err)
}
fmt.Println(raw["emails"][0])
}
Поле emails
может или не можетне придет когда-нибудь.Я знаю, что могу использовать struct
и разархивировать его дважды для массива и без него.Когда я пытаюсь получить индекс 0
из raw["emails"][0]
, я получаю следующую ошибку
invalid operation: raw["emails"][0] (type interface {} does not support indexing)
Можно ли получить индекс поля emails
?
Обновление 1
Я могу сделать что-то вроде этого fmt.Println(raw["emails"].([]interface{})[0])
, и это работает.Это единственный способ?