Как мне разобрать строку JSON в Golang?
Учитывая URL, как показано ниже.
http://127.0.0.1:3001/find?field=hostname&field=App&filters=["hostname":"example.com,"type":"vm"]
Как извлечь значения JSON, соответствующие ключам, например для: hostname 'example.com' и типа 'vm'.
я стараюсь
filters := r.URL.Query()["filters"]
который дает следующий вывод:
[["hostname":"example.com,"type":"vm"]]
1 ответ
Используйте пакет encoding / json для анализа JSON. Строка запроса в примере URL не содержит допустимый JSON.
Вот пример, показывающий, как использовать анализатор JSON для немного другого URL.
s := `http://127.0.0.1:3001/find?field=hostname&field=App&filters={"hostname":"example.com","type":"vm"}`
u, err := url.Parse(s)
if err != nil {
log.Fatal(err)
}
var v map[string]string
err = json.Unmarshal([]byte(u.Query().Get("filters")), &v)
if err != nil {
log.Fatal(err)
}
fmt.Println(v)