如何在Go中解析[] int JSON数据?

时间:2017-02-06 23:30:12

标签: go

我尝试解析JSON数据包含整数数组。但是,我无法得到整数数组。

package main
import (
    "encoding/json"
    "fmt"
)

type Anything struct {
    A []int `json:"a"`
}

func main() {
    s := "{a:[1,2,3]}"

    var a Anything
    json.Unmarshal([]byte(s), &a)
    fmt.Println(a.A)
}

我得到了空数组。

[]

我如何获得[1, 2, 3]

2 个答案:

答案 0 :(得分:2)

{a:[1,2,3]}无效JSON。对象键必须是双引号。像这样改变它按预期工作:

s := "{\"a\":[1,2,3]}"

https://play.golang.org/p/qExZAeiRJy

答案 1 :(得分:1)

您的JSON无效。您应该替换它,例如:s := [{"a":[1,2,3]}]或者像这样s := "[{\"a\":[1,2,3]}]"

您可以将代码编辑为以下内容:

package main

import (
    "encoding/json"
    "fmt"
)


type Anything struct {
    A []int `json:"a"`
}


func main() {
    // note here: `[{"a":[1,2,3]}]`
    // or: s := "[{\"a\":[1,2,3]}]"
    s := `[{"a":[1,2,3]}]`

    var a []Anything
    json.Unmarshal([]byte(s), &a)
    fmt.Println(a)
}

输出:

[{[1 2 3]}]

您可以在https://play.golang.org/p/H4GupGFpfP

上运行它