How do I parse a JSON string in Golang?

huangapple go评论92阅读模式
英文:

How do I parse a JSON string in Golang?

问题

给定以下URL:

http://127.0.0.1:3001/find?field=hostname&field=App&filters=["hostname":"example.com,"type":"vm"]

我该如何提取与键对应的JSON值,例如:hostname为'example.com'和type为'vm'。

我尝试了以下代码:

filters := r.URL.Query()["filters"]

它给出以下输出:

[["hostname":"example.com,"type":"vm"]]
英文:

Given a URL like the following.

http://127.0.0.1:3001/find?field=hostname&field=App&filters=["hostname":"example.com,"type":"vm"]

How do I extract JSON values corresponding to keys for eg: hostname 'example.com' and type 'vm'.

I am trying

filters := r.URL.Query()["filters"]

which gives following output:

[["hostname":"example.com,"type":"vm"]]

答案1

得分: 4

使用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示例

英文:

Use the encoding/json package to parse JSON. The query string in the example URL does not contain valid JSON.

Here's an example show how to use the JSON parser on a slightly different 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)

playground example

huangapple
  • 本文由 发表于 2015年1月19日 02:03:13
  • 转载请务必保留本文链接:https://go.coder-hub.com/28012993.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定