从日期到java日期

从日期到java日期,java,json,rest,spring-mvc,gson,Java,Json,Rest,Spring Mvc,Gson,我正在使用RESTAPI,我有这个问题 java.lang.IndexOutOfBoundsException: Invalid time zone indicator '0' 基本上,我使用Gson将Json转换为我的类 Gson gson = new Gson(); MyResponse myResponse = gson.fromJson(responseService.getNumber(id), MyResponse.class); 但我的json中有这样一个日期 "da

我正在使用RESTAPI,我有这个问题

java.lang.IndexOutOfBoundsException: Invalid time zone indicator '0'
基本上,我使用Gson将Json转换为我的类

Gson gson = new Gson();
    MyResponse myResponse = gson.fromJson(responseService.getNumber(id), MyResponse.class);
但我的json中有这样一个日期

 "date": 1375412400000
如何转换到date中的模型类?例如,转换并显示2018年2月25日

MyResponse.class

public class MyResponse {


    List<Dados> dados;


    public List<Dados> getDados() {
        return dados;
    }

    public void setDados(List<Dados> dados) {
        this.dados = dados;
    }


}
护墙板。班级

public class Dados {



@JsonFormat(shape = JsonFormat.Shape.STRING,pattern="dd/MM/yyyy",locale = "pt-BR", timezone = "Brazil/East")
@DateTimeFormat(pattern = "dd/MM/yyyy")
@Temporal(TemporalType.DATE)
Date data;




String codigo;

String estado;


String  cidade;

String oriundo;


...gets and setters




}
我找到了解决办法。 首先我得确定日期

GsonBuilder gsonBuilder = new GsonBuilder();
gsonBuilder.setDateFormat("M/d/yy hh:mm a");
在我必须创建一个类来反序列化日期之后

import java.lang.reflect.Type;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.TimeZone;

import com.google.gson.JsonDeserializationContext;
import com.google.gson.JsonDeserializer; 
import com.google.gson.JsonElement;
import com.google.gson.JsonParseException;

public class DateDeserializer implements JsonDeserializer<Date> {

  @Override
  public Date deserialize(JsonElement element, Type arg1, 
  JsonDeserializationContext arg2) throws JsonParseException {
    String date = element.getAsString();

    SimpleDateFormat formatter = new SimpleDateFormat("M/d/yy hh:mm a");
    formatter.setTimeZone(TimeZone.getTimeZone("UTC"));

    try {
        return formatter.parse(date);
    } catch (ParseException e) {
        System.err.println("Failed to parse Date due to:", e);
        return null;
    }
  }
}

完整代码在哪里?您正在使用不存在的变量。responseService.getNumber(id)只是映射url以获取rest服务。我的日期类是@JsonFormat(shape=JsonFormat.shape.STRING,pattern=“dd/MM/yyyy”,locale=“pt BR”,timezone=“巴西/东部”)@DateTimeFormat(pattern=“dd/MM/yyyy”)@Temporal(TemporalType.date)日期;请提供有效的MCVE。。。如果您提供了更多信息,请编辑您的问题…更新的类
@JsonFormat
不属于Gson。看起来你把杰克逊和格森混在一起了。
import java.lang.reflect.Type;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.TimeZone;

import com.google.gson.JsonDeserializationContext;
import com.google.gson.JsonDeserializer; 
import com.google.gson.JsonElement;
import com.google.gson.JsonParseException;

public class DateDeserializer implements JsonDeserializer<Date> {

  @Override
  public Date deserialize(JsonElement element, Type arg1, 
  JsonDeserializationContext arg2) throws JsonParseException {
    String date = element.getAsString();

    SimpleDateFormat formatter = new SimpleDateFormat("M/d/yy hh:mm a");
    formatter.setTimeZone(TimeZone.getTimeZone("UTC"));

    try {
        return formatter.parse(date);
    } catch (ParseException e) {
        System.err.println("Failed to parse Date due to:", e);
        return null;
    }
  }
}
GsonBuilder gsonBuilder = new GsonBuilder();
gsonBuilder.registerTypeAdapter(Date.class, new DateDeserializer());