我正在尽力将一些json数据解压缩到Go中可用的形式,但似乎无法得到它。数据是:
{
"series": [
{
"series_id": "PET.EMD_EPD2D_PTE_NUS_DPG.W",
"name": "U.S. No 2 Diesel Retail Prices, Weekly",
"units": "Dollars per Gallon",
"updated": "2013-09-27T07:21:57-0400",
"data": [
[
"20130923",
"3.949"
],
[
"20130916",
"3.974"
]
]
}
]
}
我正在尝试将data
下的数组放入变量中,因此我可以遍历它们并执行以下操作:
if data[i][0] == "20130923" {
fuelPrice.Price == data[i][1]
}
我试图将数据解组成结构但我无法弄清楚如何通过series
...即我无法弄清楚如何进行嵌套数组。这样的事情不起作用:
type Series struct {
SeriesId string
Name string
Data [][]string
}
type RawFuelPrice struct {
Series []Series
Data []interface{}[]
}
此外,如果我解组为interface{}
,我无法弄清楚如何访问数据......
我绝对是初学者。感谢您的时间和精力。
答案 0 :(得分:1)
您的代码很好 - 除了RawFuelPrice结构的Data
成员。我不认为语法是有效的,并且在JSON blob的顶层没有Data属性。
那就是说,这就是你获取数据的方式:
var rfp RawFuelPrice
json.Unmarshal(input, &rfp)
for _,s := range rfp.Series {
fmt.Println("Name",s.Name)
for _,d := range s.Data {
fmt.Println("\tdate:",d[0])
fmt.Println("\tprice:",d[1])
}
fmt.Println()
}
虽然您可能想要检查所有数据是否存在。
Go Playground链接:http://play.golang.org/p/C47lZJ_L0o