我有这样的数组。
[{
"seq" : 2,
"amnt" : 125
},
{
"seq" : 3
"amnt" : 25
},
{
"seq" : 2
"amnt" : 250
}]
我需要从seq
为2的此数组中获取对象。
在Linq,我们有扩展,我可以放置where条件。
在Go中,我是否需要使用for loop
进行循环并获取它还是有另一种方法吗?
请建议我一个最佳方式。
注意: json有很多字段,在本例中我只给了两个字段。
我是Go的新学习者。
答案 0 :(得分:2)
我不知道'最佳'这样做的方法,但现在你可以做的就是前进:
package main
import (
"encoding/json"
"fmt"
)
func main() {
byt := []byte(`[{"seq": 2,"amnt": 125},{"seq": 3,"amnt": 25},{"seq": 2,"amnt": 250}]`)
var dat []map[string]int
if err := json.Unmarshal(byt, &dat); err != nil {
panic(err)
}
for idx := range dat {
if dat[idx]["seq"] == 2 {
fmt.Println("bingo")
}
}
}
古德勒克。
编辑:在我的第一个回答中我假设您可能有非数字值,这就是为什么我使用interface{}
类型但在@JimB建议后我将其更改为只搜索int
类型,因此如果你必须在json有效负载中有一些string
或任何其他类型,则解组将失败。