我试图解码一个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
}
Run Code Online (Sandbox Code Playgroud)
我在Go Lang网站上搜索了诸如"Go Lang JSON decode without keys"之类的内容,并阅读了文章(以及"包页").我可以找到有关如何使用Go和JSON的足够信息,但是我发现的文章都没有解释如何在没有JSON数组中的键的情况下执行此操作.
如果我得到错误,我不会觉得奇怪; JSON值是stringy-numbers(这就是我将它们作为输入的方式),但我试图将它们放在整数中.我虽然没有收到错误.我试过在'itemdata'结构字符串中创建值,这没有多大帮助.从JSON值中删除引号也没有帮助.
我想知道如何在'itemdata'片段中创建我的JSON数组.三个值中的第一个将进入'itemdata.data1',第二个进入'itemdata.data2',第三个进入'itemdata.data3'.
如果您认为我可以改进我的问题,请告诉我.
Remi ,提前谢谢
你在这里有一个二维字符串数组.您可以像这样解码它:
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")
}
Run Code Online (Sandbox Code Playgroud)