如何解决如何将地图从 DynamoDB 解组到结构?
发电机上有以下字段
{
"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 返回的值分配给我的结构?
解决方法
问题的根源在于您的 Config
结构结构不正确。
我建议在将 JSON 转换为 Go 结构时使用 json-to-go;此工具将帮助您在未来发现此类问题。
一旦您正确构造了结构体,您还会注意到您的结构体字段没有大写,这意味着它们不会被导出(即可以被其他包使用),这是您的 {{1 }} 代码不会返回您期望的结果。
Here 是关于结构体字段可见性及其重要性的一个很好的答案,上面有简要总结。
以下是您的结构的更正版本,结合您的 UnmarshalMap
代码,将正确地允许您打印您的 UnmarshalMap
而不会收到一个 item
,这很不有趣。
{}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。