我有一个Android应用程序,用户将输入有关汽车的数据。完成后,他们会按一个按钮来同步他们的数据。也就是说,在按下按钮时,它将调用rest webservice(Jersey)以将数据与将在mysql中存储数据的服务器同步。 我正在服务器端使用hibernate / JPA / spring 4 / jdk1.8。
所以基本上两个实体(android和服务器)应该是相同的,以便可以进行同步。我正在同步日期时遇到问题。两个实体都使用相同的库java.util.date。我收到此错误:
无法从START_OBJECT标记中反序列化java.util.Date的实例
如果双方都是字符串,我没有任何问题。我还尝试将日期字段设置为在服务器上键入String,并在android上键入Date。它抛出了这个例外:
无法从START_OBJECT标记
中反序列化java.lang.String的实例
任何解决方案?我认为android上的java.util和服务器端的java.util不一样。
Android代码:(我正在使用google api client for json)
public class CarClient extends AbstractGoogleJsonClient {
public static final String DEFAULT_ROOT_URL = "";
public static final String DEFAULT_SERVICE_PATH = "..";
public static final String TOKEN_URL = DEFAULT_ROOT_URL + "....";
public static final String DEFAULT_BASE_URL = DEFAULT_ROOT_URL + DEFAULT_SERVICE_PATH;
public CarClient(com.google.api.client.http.HttpTransport transport,
com.google.api.client.json.JsonFactory jsonFactory,
com.google.api.client.http.HttpRequestInitializer httpRequestInitializer) {
this(new Builder(transport, jsonFactory, httpRequestInitializer));
}
public class MergeCar extends
CarRequest<Car> {
public MergeCar(Car cars) throws IOException {
super(CarClient.this,
HttpMethods.PUT,
DEFAULT_BASE_URL + "car_sync",
cars,
Car.class);
}
}
}
Android Car Entity:
@DatabaseTable(tableName = "CAR_TABLE")
public class Car implements Serializable {
private static final long serialVersionUID = 1L;
@Key("carId")
@DatabaseField(id = true, unique = true)
private String CAR_ID;
@Key("carName")
@DatabaseField
private String CAR_NAME;
@Key("createdDate")
@DatabaseField
private DATE CREATED_DATE;
//Getters and Setters .....
}