aws-sdk-go dynamodbattribute unmarshal地图列表而不是解组

时间:2018-04-20 17:55:55

标签: go amazon-dynamodb aws-sdk-go

我有一个具有以下结构的Dynamodb表:

type StatusItem struct {
    requestStatus string
    timestamp string
    RequestId string
}

我有这样的代码:

items := []StatusItem{}
err = dynamodbattribute.UnmarshalListOfMaps(result.Items, &items)
if err != nil {
    exitWithError(fmt.Errorf("failed to unmarshal Query result items, %v", err))
}

// Print out the items returned
for i, item := range items {
    fmt.Println(i)
    fmt.Printf(item.RequestId, item.requestStatus)
}

但是,items为空。

当我在一个项目中放置一个观察者时,我可以看到它对结构进行解组,但所有的值都是空的。

如果我这样做:  log.println(result.items)我可以看到那里的值(虽然有点难看)

%!(EXTRA string=)[map[timestamp:{
  S: "2018-04-18 12:04:43.761"
} RequestId:{
  S: "9"
} requestStatus:{
  S: "REQUEST_RECEIVED"
}]

我做错了什么?

1 个答案:

答案 0 :(得分:1)

感谢@Peter指出我正确的方向。

解决方案很简单(虽然情况相当愚蠢)。

如:https://til.hashrocket.com/posts/3512417fb0-private-vs-public-struct-members

中所述

小写的起始成员是私有的,而Capital是公开的。

为了让它正常工作,我需要更新我的结构:

type StatusItem struct {
    requestStatus string
    timestamp string
    RequestId string
}

为:

type StatusItem struct {
    RequestStatus string
    Timestamp string
    RequestId string
}