如何解析Golang中的JSON字符串?

时间:2015-01-18 18:03:13

标签: json parsing url go

给出如下的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 个答案:

答案 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)

playground example