我有一个这样的数组。
[{
"seq" : 2,
"amnt" : 125
},
{
"seq" : 3
"amnt" : 25
},
{
"seq" : 2
"amnt" : 250
}]
我需要从这个 seq
为 2 的数组中获取对象。
在 Linq 中,我们有扩展,我可以在其中放置 where 条件。
在 Go 中,我需要循环并使用 for 循环
获取它还是有其他方法?
请建议我一个最佳的方法。
注意:json有很多字段,这个例子我只给了两个。
我是围棋的新手。
最佳答案
我不知道执行此操作的“最佳”方法,但这是您现在可以做的事情:
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
或任何其他类型,解码将失败。
关于go - 如何根据 golang 中的条件从 json 对象数组中获取值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22196484/