发电机上有以下字段{ "config": { "BASE_AUTH_URL_KEY": "https://auth.blab.bob.com", "BASE_URL": "https://api.dummy.data.com", "CONN_TIME_OUT_SECONDS": "300000", "READ_TIME_OUT_SECONDS": "300000" }, "id": "myConfig" }and getting the element with dynamodbattribute import( "github.com/aws/aws-sdk-go/service/dynamodb" "github.com/aws/aws-sdk-go/service/dynamodb/dynamodbattribute") result, err := svc.GetItem(&dynamodb.GetItemInput{ TableName: aws.String(tableName), Key: map[string]*dynamodb.AttributeValue{ "id": { S: aws.String(configId), }, }, })这个代码它的工作原理,但当我尝试检索对象时,它的呈现是这样的 map[config:{ M: { BASE_AUTH_URL_KEY: { S: "https://auth.blab.bob.com" }, CONN_TIME_OUT_SECONDS: { S: "300000" }, READ_TIME_OUT_SECONDS: { S: "300000" }, BASE_URL: { S: "https://api.dummy.data.com" } } } id:{ S: "myConfig" }]出于这个原因,当我试图取消我的对象时,未编组的对象返回为{}type Config struct { id string baseAuthUrlKey string baseUrl string connectTimeOutSecs string readTimeOutSecs string}item := Config{}err = dynamodbattribute.UnmarshalMap(result.Item, &item)我如何将从GetItem返回的值分配给我的结构,这似乎是我的结构的映射?
1 回答
莫回无
TA贡献1865条经验 获得超7个赞
问题的根源在于您的结构结构不正确。Config
我建议在将JSON转换为Go结构时使用json-to-go;此工具将帮助您将来捕获此类问题。
正确构造结构后,您还会注意到结构字段未大写,这意味着它们不会被导出(即能够被其他包使用),这是您的代码不会返回您期望的结果的另一个原因。UnmarshalMap
以下是有关结构字段可见性及其重要性的一个很好的答案,上面简要总结了一下。
下面是您的结构的更正版本,与您的代码相结合,将正确地允许您打印您的结构,而不会收到一个没有乐趣的。UnmarshalMapitem{}
type Item struct {
Config struct {
BaseAuthUrlKey string `json:"BASE_AUTH_URL_KEY"`
BaseUrl string `json:"BASE_URL"`
ConnTimeoutSeconds string `json:"CONN_TIME_OUT_SECONDS"`
ReadTimeoutSeconds string `json:"READ_TIME_OUT_SECONDS"`
} `json:"config"`
ID string `json:"id"`
}
- 1 回答
- 0 关注
- 95 浏览
添加回答
举报
0/150
提交
取消