Amazon AWS DynamoDB将Map的List转换为对象的ArrayList

时间:2017-03-07 19:41:17

标签: list amazon-web-services dictionary arraylist amazon-dynamodb

我正在尝试从Amazon AWS学习DynamoDB,并且能够成功检索数据,但是我很难将其转换为可用的形式。

我的目标是将结果转换为我的Data数据类型的ArrayList,这是一个带有属性,getter和setter的ValueObject类。

谢谢!

Map<String,String> expressionAttributesNames = new HashMap<>();
expressionAttributesNames.put("#network_asset_code","network_asset_code");
expressionAttributesNames.put("#temperature","temperature");

Map<String,AttributeValue> expressionAttributeValues = new HashMap<>();
expressionAttributeValues.put(":network_asset_codeValue", new AttributeValue().withS("17AB05"));
expressionAttributeValues.put(":temperature", new AttributeValue().withN("21"));

ScanRequest scanRequest = new ScanRequest()
   .withTableName("things")
   .withFilterExpression("#network_asset_code = :network_asset_codeValue and #temperature = :temperature")
   .withExpressionAttributeNames(expressionAttributesNames)
   .withExpressionAttributeValues(expressionAttributeValues);


ScanResult scanResult = client.scan(scanRequest);

List<Map<String,AttributeValue>> attributeValues = scanResult.getItems();
ArrayList<Data> dataArray = new ArrayList<>();

for (Map map: attributeValues) {
     Data d = map.values();
     dataArray.add(d);
}

2 个答案:

答案 0 :(得分:1)

您可以使用DynamoDBMapper使用annotations自动将DynamoDB项目转换为Java对象(PO​​JO)。

答案 1 :(得分:0)

过了一会儿我才能做对:

for (Map map: attributeValues) {

            AttributeValue attr = (AttributeValue) map.get("network_asset_code");

            Data d = new Data();
            d.network_asset_code = attr.getS();

            dataArray.add(d);
        }