go - 如何根据 golang 中的条件从 json 对象数组中获取值?

标签 go

我有一个这样的数组。

[{
    "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/

相关文章:

firebase - panic : runtime error: invalid memory address or nil pointer dereference [signal SIGSEGV: segmentation violation firebase. google.com/go.(*App).Database

math - 一些运营商之间的区别 "|"、 "^"、 "&"、 "&^"。戈朗

xml - 将 innerxml 解码为字符串指针

go - 如何在 go 中引用未命名的函数参数?

go - 如何在Golang中实现导出字段的setter?

Goroutine 存储 channel 值没有死锁

go - fyne的线程安全在哪里定义的?

Golang 命令在终端中工作但不与 exec 包一起工作

docker - 去构建 docker : unexpected binary in/go/bin

time - 在 Go 中将 UTC 转换为 "local"时间