我從 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)
- 1 回答
- 0 關注
- 127 瀏覽
添加回答
舉報
0/150
提交
取消