我有問題了解如何從我的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