为了账号安全,请及时绑定邮箱和手机立即绑定

将 DynamoDBAttributeValues 解组为具有不同属性的结构

将 DynamoDBAttributeValues 解组为具有不同属性的结构

Go
绝地无双 2022-05-23 17:40:42
我从 dynamodb 读取了一些数据。这就是我得到的{  Item: {    rating: {      N: "6"    },    pk: {      S: "artist-1"    },    gender: {      S: "woman"    },    sk: {      S: "Alexandra A"    }  }}现在我有一个看起来像这样的结构:type Artist struct {    ArtistID string  `json:"id"`    Gender   string  `json:"gender"`    Name     string  `json:"name"`    Rating   float64 `json:"rating"`}现在我做artist := model.Artist{}err = dynamodbattribute.UnmarshalMap(result.Item, &artist)现在我可以使用artist.gender. 所以这很好,但我不能为 ArtistId 这样做,因为它在我的 dynamodb 中被称为 pk 并且我使用 'id' 作为我的结构。什么是解决这个问题的干净方法?我不想在结构中用 'pk' 替换我的 'id'。
查看完整描述

1 回答

?
拉风的咖菲猫

TA贡献1995条经验 获得超2个赞

UnmarshalMap()不支持任何给定的标签 Unmarshal。如果您不想在结构中使用 'pk' 更改 'id',则必须在 map 之前手动设置pkinid键的值。UnmarshalMap


func UnmarshalMap(m map[string]*dynamodb.AttributeValue, out interface{}) error {

    m["id"] = m["pk"]

    dynamodbattribute.UnmarshalMap(m, out)

}

最好为这种特殊情况调整创建一个自己的通用 Unmarshal 函数,然后UnmarshalMap()在内部调用。


artist := model.Artist{}

err = UnmarshalMap(result.Item, &artist)


查看完整回答
反对 回复 2022-05-23
  • 1 回答
  • 0 关注
  • 104 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信