Как мне разобрать строку 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)

пример детской площадки

Другие вопросы по тегам