在 Golang 中将 interface{} 转换为 struct

Pau*_*son 8 struct interface go

我对 Go 很陌生,我正在努力了解所有不同的类型以及如何使用它们。我有一个包含以下内容的界面(最初在一个 json 文件中):

[map[item:electricity transform:{fuelType}] map[transform:{fuelType} item:gas]]
Run Code Online (Sandbox Code Playgroud)

我有以下结构

type urlTransform struct {
        item string
        transform string
}
Run Code Online (Sandbox Code Playgroud)

我不知道如何将接口数据放入结构中;我敢肯定这真的很愚蠢,但我一整天都在尝试。任何帮助将不胜感激。

Cer*_*món 6

将 JSON 直接解码为您想要的类型,而不是解码为interface{}.

声明与 JSON 数据结构匹配的类型。对 JSON 对象使用结构体,对 JSON 数组使用切片:

type transform struct {
    // not enough information in question to fill this in.
}

type urlTransform struct {
    Item string
    Transform transform
}

var transforms []urlTransform
Run Code Online (Sandbox Code Playgroud)

必须导出字段名称(以大写字母开头)。

将 JSON 解组为声明的值:

err := json.Unmarshal(data, &transforms)
Run Code Online (Sandbox Code Playgroud)

或者

err := json.NewDecoder(reader).Decode(&transforms)
Run Code Online (Sandbox Code Playgroud)