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

时间:2014-03-05 11:31:28

标签: go

我有这样的数组。

[{
    "seq" : 2,
    "amnt" : 125
},
{
    "seq" : 3
    "amnt" : 25
},
{
    "seq" : 2
    "amnt" : 250
}]

我需要从seq为2的此数组中获取对象。

在Linq,我们有扩展,我可以放置where条件。

在Go中,我是否需要使用for loop进行循环并获取它还是有另一种方法吗?

请建议我一个最佳方式。

注意: json有很多字段,在本例中我只给了两个字段。

我是Go的新学习者。

1 个答案:

答案 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或任何其他类型,则解组将失败。