我參加了AWS Android DynamoDB SDK,最近遇到問題,仍無法解決問題。 嘗試獲取DynamoDB的「創建」值時,出現以下錯誤消息:「期望值S {N:1449848553974,}」。 到目前爲止,我從AWS文檔中得知的是'N'表示數據類型號碼。使用DynamoDB SDK獲取AWS DynamoDB號碼數據類型
下面是類代碼:
@DynamoDBTable(tableName = "dev.records_log")
public class Record
{
private Created created;
@DynamoDBAttribute(attributeName = "created")
@DynamoDBMarshalling(marshallerClass = TimeStampConverter.class)
public Created getTimestamp_created()
{
return created;
}
@DynamoDBMarshalling(marshallerClass = TimeStampConverter.class)
public void setRecord_created(Created created) {
this.created = created;
}
希望有人可以幫助我這個問題。我通過互聯網瀏覽,但沒有積極的結果。
更新: 到目前爲止,我可以在DynamoDB看到它的類型是「數字」的Unix時間戳值。
時間戳類別: 對於時間戳類我只是實現DynamoDBMarshaller接口,並把一些日誌文件,以檢查是否相應地接收到的數據。
public class TimeStampConverter implements DynamoDBMarshaller<AdditionalInformation>
{
@Override
public String marshall(Created created)
{
Log.i("LOG","Marshall create value: "+created);
return null;
}
@Override
public Created unmarshall(Class<Created> clazz, String obj) {
Log.i("LOG","Created unmarshall ");
Created date_time_created = new Created();
Log.i("LOG","date_time_created "+date_time_created);
Log.i("LOG","unmarshall s value "+s);
Log.i("LOG","unmarshall s length "+s.length());
try{
if (s != null && s.length() != 0)
{
String[] data = s.split(" ");
date_time_created.setDate_created(data[0].trim());
date_time_created.setTime_created(data[1].trim());
}
}catch (Exception e)
{
Log.i("LOG","unmarshall error "+e.getMessage());
e.printStackTrace();
}
return date_time_created;
}
}
創建的類:
public class Created
{
private String date_created;
private String time_created;
public String getDate_created() {
return date_created;
}
public void setDate_created(String date_created) {
this.date_created = date_created;
}
public String getTime_created() {
return time_created;
}
public void setTime_created(String time_created) {
this.time_created = time_created;
}
}
在此先感謝。
我用兩個對應的類更新代碼 – Melchior
Hi @Melchior - 是由不同系統插入到您的表中的數字時間戳嗎?看起來你不能控制這些時間戳的數據類型 - 我是否正確? –