dynamodb的Golang包,支持map、list和JSON

dynamodb的Golang包,支持map、list和JSON,go,amazon-dynamodb,Go,Amazon Dynamodb,我尝试在dynamodb中保存JSON对象,使用新添加的对JSON类型的支持(我的理解是JSON类型基本上是maps+list),以便查询和修改嵌套的JSON文档 我找不到任何支持新添加数据类型的dynamodb的golang包 有什么建议吗 要将JSON放入aws dynamodb,我们首先需要迭代JSON结构的每个属性,并以以下方式将其转换为dynamodb.AttributeValue: func (e *DB) saveToDynamodb(data map[string]interfa

我尝试在dynamodb中保存JSON对象,使用新添加的对JSON类型的支持(我的理解是JSON类型基本上是maps+list),以便查询和修改嵌套的JSON文档

我找不到任何支持新添加数据类型的dynamodb的golang包


有什么建议吗

要将JSON放入aws dynamodb,我们首先需要迭代JSON结构的每个属性,并以以下方式将其转换为dynamodb.AttributeValue:

func (e *DB) saveToDynamodb(data map[string]interface{}){
var vv=make(map[string]*dynamodb.AttributeValue)

for k,v:=range data{
    x:=(v.(string))  //assert type as required
    xx:=&(x)
    vv[k]=&dynamodb.AttributeValue{S: xx,}
}
//s:=data["asset_id"].(string)
params := &dynamodb.PutItemInput{
    Item: vv,
    TableName: aws.String("Asset_Data"), // Required
}
resp, err := e.dynamodb.PutItem(params)

if err != nil {
    // Print the error, cast err to awserr.Error to get the Code and
    // Message from an error.
    fmt.Println(err.Error())
    return
}

// Pretty-print the response data.
fmt.Println(resp)
}

从sdk a的版本2开始。这使得将任何接口转换为
attributevalue.MarshalMap(r)
变得更加容易

根据他们的例子:

类型记录结构{
ID字符串
URL[]字符串
}
//...
r:=记录{
ID:“ABC123”,
URL:[]字符串{
"https://example.com/first/link",
"https://example.com/second/url",
},
}
av,err:=attributevalue.MarshallMap(r)
如果出错!=零{
返回fmt.Errorf(“封送记录失败,%w”,错误)
}
_,err=client.PutItem(context.TODO(),&dynamodb.PutItemInput{
TableName:aws.String(myTableName),
项目:av,
})
如果出错!=零{
返回fmt.Errorf(“未能放入记录,%w”,错误)
}

还是不符合要求?该软件包不支持新的数据类型。实际上,我正在寻找一些建议来修改/更新软件包以添加新类型,或者有人已经在做这项工作了