如何在Go中的结构中对列表中的结构进行JSON解组?

如何在Go中的结构中对列表中的结构进行JSON解组?,json,go,Json,Go,如何将此JSON数据反序列化为结构中的数组/切片中的适当结构?我希望避免反序列化到映射 d := []byte(`{ "a": 1, "b": [ {"c": 3, "d": 4}, {"c": 5, "d": 6} ] }`) 此解决方案非常直观: d := []byte(`{ "a": 1, "b": [ {"c": 3, "d": 4}, {"c": 5, "d": 6}

如何将此JSON数据反序列化为结构中的数组/切片中的适当结构?我希望避免反序列化到
映射

d := []byte(`{
    "a": 1,
    "b": [
        {"c": 3, "d": 4},
        {"c": 5, "d": 6}
    ]
    }`)

此解决方案非常直观:

d := []byte(`{
    "a": 1,
    "b": [
        {"c": 3, "d": 4},
        {"c": 5, "d": 6}
    ]
    }`)

var j struct {
    A uint
    B []struct {
        C uint
        D uint
    }
}
if err := json.Unmarshal(d, &j); err != nil {
    log.Fatal(err)
}
fmt.Printf("%+v\n", j)

打印到标准输出的结果:
{A:1b:[{C:3d:4}{C:5d:6}}

此解决方案非常直观:

d := []byte(`{
    "a": 1,
    "b": [
        {"c": 3, "d": 4},
        {"c": 5, "d": 6}
    ]
    }`)

var j struct {
    A uint
    B []struct {
        C uint
        D uint
    }
}
if err := json.Unmarshal(d, &j); err != nil {
    log.Fatal(err)
}
fmt.Printf("%+v\n", j)

打印到标准输出的结果:
{A:1b:[{C:3d:4}{C:5d:6}}

此解决方案非常直观:

d := []byte(`{
    "a": 1,
    "b": [
        {"c": 3, "d": 4},
        {"c": 5, "d": 6}
    ]
    }`)

var j struct {
    A uint
    B []struct {
        C uint
        D uint
    }
}
if err := json.Unmarshal(d, &j); err != nil {
    log.Fatal(err)
}
fmt.Printf("%+v\n", j)

打印到标准输出的结果:
{A:1b:[{C:3d:4}{C:5d:6}}

此解决方案非常直观:

d := []byte(`{
    "a": 1,
    "b": [
        {"c": 3, "d": 4},
        {"c": 5, "d": 6}
    ]
    }`)

var j struct {
    A uint
    B []struct {
        C uint
        D uint
    }
}
if err := json.Unmarshal(d, &j); err != nil {
    log.Fatal(err)
}
fmt.Printf("%+v\n", j)

打印到stdout:
{A:1b:[{C:3d:4}{C:5d:6}]}

的结果只有在预先知道每个元素的类型时才有效。否则,您将需要应用更复杂的技巧来将反序列化代码映射到正确的类。这只有在预先知道每个元素的类型时才有效。否则,您将需要应用更复杂的技巧来将反序列化代码映射到正确的类。这只有在预先知道每个元素的类型时才有效。否则,您将需要应用更复杂的技巧来将反序列化代码映射到正确的类。这只有在预先知道每个元素的类型时才有效。如果没有,则需要应用更复杂的技巧将反序列化代码映射到正确的类。