我有问题了解如何从我的Android应用程序为dynamoDB创建列表。 我可以从我的应用程序中存储和加载{ "deviceId": "920e185a-63ed-46ca-bfca-f7a484ccb708" }
。但是,然后添加List并将我的JSON对象存储为List中的Map是我挣扎。DynamoDB列表类型
的dynamoDB结构我要创建和填充看起来像这样的JSON格式:
{ "data": [ { "heartBeatId": 1, "status": 1, "timeStamp": 1502183502711 }, { "heartBeatId": 2, "status": 1, "timeStamp": 1502183502812 } ], "deviceId": "90563daa-63ae-40c5-905e-9e8c02f9624f" }
然后我想填充心跳对象,它是地图类型的数据列表。 { "heartBeatId": 2, "status": 1, "timeStamp": 1502183502812 }
所以即时通过定义@DynamoDBTable(tableName = "heartbeat")
类来创建此结构时遇到问题。
我一直在阅读有关列表和DynamoDBDocument这里:
这是怎么@DynamoDBTable(tableName = "heartbeat")
类看起来现在。
我希望有人能帮助我定义它,或给我提供线索,了解如何获得我需要的结构。
package com.example.android.awsdynamoapp;
import com.amazonaws.mobileconnectors.dynamodbv2.dynamodbmapper.DynamoDBAttribute;
import com.amazonaws.mobileconnectors.dynamodbv2.dynamodbmapper.DynamoDBDocument;
import com.amazonaws.mobileconnectors.dynamodbv2.dynamodbmapper.DynamoDBHashKey;
import com.amazonaws.mobileconnectors.dynamodbv2.dynamodbmapper.DynamoDBTable;
import java.lang.annotation.Annotation;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@DynamoDBTable(tableName = "heartbeat")
public class HeartBeat implements DynamoDBTable {
private String deviceId;
private Map<String, Integer> data;
private List dataList;
public HeartBeat(){};
public HeartBeat(String deviceId){this.deviceId = deviceId;};
public HeartBeat(String deviceId, List dataList) {
this.deviceId = deviceId;
this.dataList = dataList;
// this.timeStamp = timeStamp;
}
@DynamoDBHashKey(attributeName = "deviceId")
public String getDeviceId() {
return deviceId;
}
public void setDeviceId(String deviceId) {
this.deviceId = deviceId;
}
public void setTimeStamp(String timeStamp) {
//this.timeStamp = timeStamp;
}
public void setData(String deviceId) {
Map<String, Integer> data = new HashMap<>();
}
@DynamoDBAttribute(attributeName = "data")
public List getData() {
return this.dataList;
}
@DynamoDBDocument
public static class JsonArray {
private String heartBeatId;
private String status;
private String timeStamp;
}
/**
* The name of the table to use for this class.
*/
@Override
public String tableName() {
return "heartbeat";
}
@Override
public Class<? extends Annotation> annotationType() {
return null;
}
}
这适用于创建我需要的结构。非常感谢。但我还没有明白如何添加一个新的对象到列表中。这样我每次都覆盖它.save() – Daniel
好。 OP正在要求样本创建结构。我希望答案能够解决这个问题。如果您想要更新数据,则可以使用低级API而不是映射器来防止更新所有出现的列表属性。 – notionquest
再次感谢您的帮助。我已经接受了这个答案。 – Daniel