如何处理具有与json响应不同的json密钥的Struct

时间:2016-09-17 20:37:53

标签: json go struct

我有一个结构VideoInfo,其中有一个名为embedCode的键。我查询的API会将嵌入代码返回为embed_code。在解组响应期间,如何确保embed_code进入embedCode

还有一种简单的方法可以获取大型json字符串并自动将其转换为结构体,还是只能使用地图?

2 个答案:

答案 0 :(得分:1)

首先,struct的字段必须从大写字母开始才能公开。所以你需要这样的东西:

type VideoInfo struct {
    EmbedCode string `json:"embed_code"`
}

查看documentation了解更多信息。

答案 1 :(得分:1)

关于重新映射字段名称,请在结构声明中使用相应的注释:

type VideoInfo struct {
    EmbedCode string `json:"embed_code"`
}

marshaller / un-marshaller只会处理公共字段,因此您需要将字段名称大写。

关于转换整个结构,是的很容易。声明一个实例来解组并传递对json.Unmarshal方法的引用(来自测试):

data, _ := json.Marshal(request)

var resp response.VideoInfo
if err := json.Unmarshal(data, &resp); err != nil {
    t.Errorf("unexpected error, %v", err)
}