Я пишу клиент websocket в Go. Я получаю следующий JSON от сервера:Как получить доступ к глубоко вложенным клавишам json и значениям
{"args":[{"time":"2013-05-21 16:57:17"}],"name":"send:time"}
Я пытаюсь получить доступ к параметру time
, но просто не могу понять, как достичь глубоко в тип интерфейса:
package main;
import "encoding/json"
import "log"
func main() {
msg := `{"args":[{"time":"2013-05-21 16:56:16", "tzs":[{"name":"GMT"}]}],"name":"send:time"}`
u := map[string]interface{}{}
err := json.Unmarshal([]byte(msg), &u)
if err != nil {
panic(err)
}
args := u["args"]
log.Println(args[0]["time"]) // invalid notation...
}
Какие ошибки очевидно, так как запись не прав:
invalid operation: args[0] (index of type interface {})
Я просто не могу найти способ, чтобы вырыть в карту, чтобы захватить глубоко н эстадными ключами и значениями.
Как только я смогу перехватить динамические значения, я бы хотел объявить эти сообщения. Как написать структуру типов для представления таких сложных структур данных?
Будет ли возвращенный JSON иметь одинаковые поля? – Intermernet
Да, в основном то же самое. – ojosilva
Тогда вы должны действительно пойти с @ cthom06, чтобы определить структуру, которая соответствует данным. В конечном итоге это будет намного проще, так как вы будете знать, какой тип вы получаете для каждого поля. – Intermernet