Rest webservice无法反序列化日期

时间:2015-09-01 12:09:20

标签: android spring jpa java-8 ormlite

我有一个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 .....


}

0 个答案:

没有答案