Json 访问嵌套数组中的数据&;有围棋的物体

Json 访问嵌套数组中的数据&;有围棋的物体,json,go,Json,Go,我正在尽最大努力在Go中将一些json数据解压成可用的形式,但似乎无法得到它。数据如下: { "series": [ { "series_id": "PET.EMD_EPD2D_PTE_NUS_DPG.W", "name": "U.S. No 2 Diesel Retail Prices, Weekly", "units": "Dollars per Gallon", "upd

我正在尽最大努力在Go中将一些json数据解压成可用的形式,但似乎无法得到它。数据如下:

{
    "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{}[]
}
另外,如果我解组到一个
接口{}
,我就不知道如何访问数据


我绝对是个初学者。感谢您的时间和努力。

您的代码很好-除了RawFuelPrice结构的
数据
成员。我认为这种语法是无效的,JSON blob的顶层没有数据属性

这就是说,这是您获取数据的方式:

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()
}
虽然你可能想检查所有的数据都在那里


转到操场链接:

您的代码很好-除了RawFuelPrice结构的
数据成员。我认为这种语法是无效的,JSON blob的顶层没有数据属性

这就是说,这是您获取数据的方式:

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()
}
虽然你可能想检查所有的数据都在那里


转到操场链接:

参见例如,当然还有。XML和JSON解码的工作原理基本相同,只需使用
JSON:“xyz”
作为struct标记。@Volker,很抱歉,我无法理解这一点。我试过这样做:
type EIASeries[]struct{SeriesId string
json:“series_id”`数据接口{}
json:“Data”
}type EIASeries[]struct{series EIASeries
json:“series”
}`当我记录var响应响应时,我会得到很多数据,但当我记录resp.series或log resp.series.Data时,我什么都得不到。。。谢谢。也许这就是你想要的。看,当然。XML和JSON解码的工作原理基本相同,只需使用
JSON:“xyz”
作为struct标记。@Volker,很抱歉,我无法理解这一点。我试过这样做:
type EIASeries[]struct{SeriesId string
json:“series_id”`数据接口{}
json:“Data”
}type EIASeries[]struct{series EIASeries
json:“series”
}`当我记录var响应响应时,我会得到很多数据,但当我记录resp.series或log resp.series.Data时,我什么都得不到。。。谢谢。也许这就是你想要的。
Data[]接口{}
是多余的。它与json数据中的任何内容都不匹配。
data[]接口{}
是冗余的。它与json数据中的任何内容都不匹配。