微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 AWS SDK CPP 将项目放入 Amazon DynamoDB 中,使用 JSON 格式的项目作为输入

如何解决使用 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 举报,一经查实,本站将立刻删除。