Go和JSON:如何动态加载字段

时间:2016-11-15 08:30:20

标签: json parsing go

我知道如何在没有太多问题的情况下使用JSON和接口。

我想让用户从JSON字符串中选择一个JSON元素,并将元素模式存储在一个字符串中,以便我以后可以动态加载它。 我有以下JSON:

{
    "id": 1,
    "name": "A green door",
    "price": 12.50,
    "tags": ["home", "green"]
}

当然,如果我想要JSON的id元素,这很容易,因为id是我要保存的字符串。

现在让我们说我想要标签[1]。

随着JSON变得越来越复杂,你会发现这变得越来越难。例如,我可能想要保存类似于tags[1].data[0].values.id的模式,依此类推......

基本上我需要从我的JSON中获取一个定义良好的元素,并且需要将模式保存为字符串。

如果我没有实现自己的字符串解析器,GO是否能解决这类问题?

1 个答案:

答案 0 :(得分:1)

我能想到有几个包有解决这类问题的工具。以下是我头脑中的一些例子:

1)github.com/jmoiron/jsonq

jq := jsonq.NewQuery(yourData)
jq.Int("id")
jq.String("tags", "0")

2)github.com/araddon/gou

jh := gou.NewJsonHelper(yourData)
jh.Int("id")
jh.Strings("tags[0]")

3)https://github.com/elgs/gojq

包非常相似,但功能结构略有不同。