如何将地图从 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返回的值分配给我的结构,这似乎是我的结构的映射?


慕村225694
浏览 96回答 1
1回答

莫回无

问题的根源在于您的结构结构不正确。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"`}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go