给出如下的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"]]
答案 0 :(得分:3)
使用encoding/json包解析JSON。示例URL中的查询字符串不包含有效的JSON。
以下是一个示例,说明如何在稍微不同的URL上使用JSON解析器。
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)