Я нахожусь в SDK Android DynamoDB SDK Android, и в последнее время я столкнулся с проблемой и до сих пор не могу ее исправить. При попытке получить значение «Создано» моего DynamoDB я получаю следующее сообщение об ошибке: «Ожидаемое значение S в значении {N: 1449848553974,}". Что я знаю до сих пор из документации AWS, является то, что 'N' Подставка для Datatype Номер.Получение типа данных AWS DynamoDB с использованием DynamoDB SDK
Вот код класса:
@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;
}
Надежда кто-то может помочь мне с этим вопросом. Я просматриваю интернет, но без положительных результатов.
Update: До сих пор я могу видеть в DynamoDB это значение Отметка времени Unix типа «Номер».
TimeStamp Класс: Для класса Timestamp я просто реализовать интерфейс 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
Привет @Melchior - это числовые метки времени, вставленные другой системой в вашу таблицу? Кажется, что у вас нет контроля над типом данных этих временных меток - я правильно понял? –