如何解决使用 AWS SDK CPP 将项目放入 Amazon DynamoDB 中,使用 JSON 格式的项目作为输入
是否有任何简单的方法可以使用 AWS SDK CPP 将项目放入 Amazon DynamoDB 中,并使用 JSON 格式的项目作为输入?类似的东西
Aws::DynamoDB::Model::PutItemRequest request;
request.SetTableName(table);
request.FunctionThatSetsAllAttributesParsingAJsonString(json_string);
还是总是需要设置每个属性及其类型?
Aws::DynamoDB::Model::PutItemRequest request;
request.SetTableName(table);
Aws::DynamoDB::Model::AttributeValue val1;
val1.SetS(str);
request.AddItem(key,val1);
Aws::DynamoDB::Model::AttributeValue val2;
...
解决方法
如果 JSON 对象遵循 Amazon DynamoDB JSON 格式,您可以轻松将其转换为 Aws::Map<:string aws:: dynamodb::model::attributevalue> 对象。例如,对于 Jsoncpp Json::Value 对象:
Aws::Map<Aws::String,Aws::DynamoDB::Model::AttributeValue> json2atts(const Json::Value& json) {
try {
Aws::Map<Aws::String,Aws::DynamoDB::Model::AttributeValue> amap;
Aws::Utils::Json::JsonValue jval(Json::FastWriter().write(json));
if (!jval.WasParseSuccessful()) {
throw exception("Failed to parse input JSON");
};
Aws::Utils::Json::JsonView jview = jval.View();
Aws::Map<Aws::String,Aws::Utils::Json::JsonView> jmap = jview.GetAllObjects();
for(auto& i : jmap) {
amap[i.first] = i.second.AsObject();
};
return amap;
}
catch (std::exception &e) {
...
};
};
然后,放置 Aws::Map<:string aws::dynamodb::model::attributevalue> 对象:
Aws::DynamoDB::Model::PutItemRequest request;
request.SetTableName(table);
request.SetItem(amap);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。