Go Dynamodb解组映射到结构

Go Dynamodb解组映射到结构,go,struct,amazon-dynamodb,aws-sdk-go,Go,Struct,Amazon Dynamodb,Aws Sdk Go,我正在尝试从dynamodb中检索一个列,该列保存为map[string][]string(映射键为string,值为string列表) 例如: { { "string1": ["1", "2"]}, { "string2": ["3", "4"]}, } 我正在获取数据,但无法将其解组并存储在结构中 type Record struct { listOfMap map[string][]string } scanInput := &dynamodb.ScanInp

我正在尝试从dynamodb中检索一个列,该列保存为
map[string][]string
(映射键为string,值为string列表)

例如:

{ 
  { "string1": ["1", "2"]},
  { "string2": ["3", "4"]},
}
我正在获取数据,但无法将其解组并存储在结构中

type Record struct {
    listOfMap map[string][]string
}

scanInput := &dynamodb.ScanInput{
    TableName:            aws.String("someTable"),
    ProjectionExpression: aws.String("desiredColumnToRetrieve"),
}

dynamodbOutput, err := svc.dynamodb.Scan(scanInput)
if err != nil {
    log.Errorf("dynamodb.Scan() error - %s", err)
}

fmt.Println(dynamodbOutput)

records := []Record{}

err = dynamodbattribute.UnmarshalListOfMaps(dynamodbOutput.Items, &records)
if err != nil {
    log.Errorf("dynamodbattribute.UnmarshalListOfMaps() error - %s", err)
}

fmt.Println(records)
dynamodb输出(此输出来自上述打印语句):


数据未保存到struct/map中

可能无法工作,您需要先迭代项目,如:

for _, i := range dynamodbOutput.Items {
        record := Record{}

        err = dynamodbattribute.UnmarshalMap(i, &record)
事实上,你们的地图列表是普通地图。你为什么这么叫?这相当于一张地图


顺便说一句,对NoSQL表进行完全扫描并不是最佳做法,如果您想一直这样做,最好查看分区排序键和整个数据模式。干杯。

可能不起作用,您需要先迭代项目,如:

for _, i := range dynamodbOutput.Items {
        record := Record{}

        err = dynamodbattribute.UnmarshalMap(i, &record)
事实上,你们的地图列表是普通地图。你为什么这么叫?这相当于一张地图


顺便说一句,对NoSQL表进行完全扫描并不是最佳做法,如果您想一直这样做,最好查看分区排序键和整个数据模式。干杯。

谢谢您的回复,但它不起作用。我有一个映射列表,其中键是字符串,值是字符串列表,例如:{{{“string1”:[“1”,“2”]},{“string2”:[“3”,“4”]},所以我想我需要使用UnmarshalListofMapserr=dynamodbattribute.unmarshallistofmap(dynamodbOutput.Items,&records)将永远无法工作。您需要迭代dynamodbOutput.Items,如果是for循环,然后将AttributeValue(项目元素的值)解组到记录中,对于u,i:=范围dynamodbOutput.Items,没有其他方法{先这样做,然后解组我认为我并没有初始化映射,所以输出是一个空映射。有没有方法初始化包含映射的结构?你在开玩笑吗?你有调试器吗?我每天都在用dynamodb做这些事情。首先迭代for循环中的项!dynamoattribute只能解组dynamodb相关的东西,不是常规列表。这是错误的。谢谢你的回复,但它不起作用。我有一个映射列表,其中键为字符串,值为字符串列表示例:{{“string1”:[“1”,“2”]},{“string2”:[“3”,“4”]},},所以我想我需要unmarshallistfmapserr=dynamodbattribute.unmarshallistfmaps(dynamodbOutput.Items,&records)将永远无法工作。您需要迭代dynamodbOutput.Items,如果是for循环,则需要将AttributeValue(项目元素的值)解组到记录中,对于u,i:=范围dynamodbOutput.Items,没有其他方法{先这样做,然后解组我认为我并没有初始化映射,所以输出是一个空映射。有没有方法初始化包含映射的结构?你在开玩笑吗?你有调试器吗?我每天都在用dynamodb做这些事情。首先迭代for循环中的项!dynamoattribute只能解组dynamodb相关的东西,不是常规列表。这是错误的