如何解析Golang中的JSON字符串? [英] How do I parse a JSON string in Golang?

查看:458
本文介绍了如何解析Golang中的JSON字符串?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

给定一个如下的URL。

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

如何提取与例如主机名'example.com'和类型'vm'的键相对应的JSON值。



我正在尝试

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

给出以下输出:

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


解决方案

使用编码/ 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)

操场示例


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"]]

解决方案

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

这篇关于如何解析Golang中的JSON字符串?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆