我正在尝试解码JSON数组并将其放在一个结构的片中。我已经阅读了如何执行此操作,但前提是JSON数组包含密钥。我的JSON数组不包含键。
我已将程序剥离到只处理JSON数据的部分。它编译,可以在下面找到。
package main
// 2014-04-19
import (
"fmt"
"encoding/json"
)
type itemdata struct {
data1 int // I have tried making these strings
data2 int
data3 int
}
func main() {
datas := []itemdata{}
json.Unmarshal([]byte(`[["7293","1434","99646"],["4657","1051","23795"]]`), &datas)
// I have tried the JSON string without the qoutes around the numbers
fmt.Println(len(datas)) // This prints '2'
fmt.Println("This prints") // This does print
for i := range datas {
fmt.Println(datas[i].data1) // This prints '0', two times
}
fmt.Println("And so does this") // This does print
}
我搜索过没有按键的' Go Lang JSON解码'在Go Lang网站上阅读文章(以及'包装页面')。我可以找到有关如何使用Go和JSON的足够信息,但是我发现的文章都没有解释如何在没有JSON数组中的键的情况下执行此操作。
如果我收到错误,我不会觉得奇怪; JSON值是stringy-numbers(我将它们作为输入的方式),但我试图将它们放在整数中。我虽然没有收到错误。我已经尝试在" itemdata'中创建值。结构字符串,没有多大帮助。从JSON值中删除引号也没有帮助。我想知道如何在一个&item项目数据中创建我的JSON数组。三个值中的第一个将进入" itemdata.data1',第二个进入" itemdata.data2'第三个是“itemdata.data3'。
”如果您认为我可以改进我的问题,请告诉我。
提前致谢,
雷米
答案 0 :(得分:7)
这里有一个二维字符串数组。您可以像这样解码:
type itemdata [][]string
func main() {
var datas itemdata
json.Unmarshal([]byte(`[["7293","1434","99646"],["4657","1051","23795"]]`), &datas)
fmt.Println(len(datas))
fmt.Println("This prints")
for i := range datas {
fmt.Println(datas[i][1])
}
fmt.Println("And so does this")
}