Как конвертировать DateTime в Date? - PullRequest
0 голосов
/ 04 декабря 2018

В классе Cotacoes у меня есть поле creation_date, это Date, но на сервере это DateTime.При получении JSON возникает следующая ошибка:

java.text.ParseException: Failed to parse date ["2018-11-05T12:12:37.307']: No time zone indicator

Как решить эту проблему?Я использую дооснащение для совершения и приема вызовов с сервера.

Cotacoes:

public class Cotacoes implements Serializable {

    private static final long serialVersionUID = 842387749350567455L;
    @SerializedName("quotation_id")
    @Expose
    private int quotation_id;
    //private int transaction_id;
    @SerializedName("pecas")
    @Expose
    private List<Pecas> pecas;
    @SerializedName("creation_date")
    @Expose
    private Date creation_date;
   // private int duration;
    @SerializedName("brand")
    @Expose
    private String brand;
    @SerializedName("vehicle")
    @Expose
    private String vehicle;

....
getters and setters
}

Дооснащение:

public class APIRetrofit {
    public static final String BASE_URL = "http://server.net/";
    private static Retrofit retrofit = null;

    private static Gson gson = new GsonBuilder()
            .create();


    public static Retrofit getRetrofitClient() {
        if (retrofit==null) {
            retrofit = new Retrofit.Builder()
                    .baseUrl(BASE_URL)
                    .addConverterFactory(GsonConverterFactory.create(gson))
                    .build();
        }
        return retrofit;
    }
}

Интерфейс:

public interface APIService {

    interface ReturnFutureCallback<T> {
        void onSuccess(T retorno);

        void onFailure(T retorno);
    }

    @POST("/cotacao")
    @FormUrlEncoded
    Call<JsonQuotationResponse> listaCotacao(@Header("Authorization") String token, @Field("seller_company_id") String seller_company_id);

}

Ответы [ 2 ]

0 голосов
/ 02 января 2019
  • Я думаю, на сервере, это longtime или String, поэтому поле creation_date, это longtime или String
0 голосов
/ 04 декабря 2018

Вам необходимо создать JsonDeserializer для разбора DateTime на настроенный объект Date.

Для более подробной информации вы можете обратиться по следующим ссылкам:

https://kylewbanks.com/blog/String-Date-Parsing-with-GSON-UTC-Time-Zone

gson не может выполнить синтаксический анализ с помощью GsonBuilder.setDateFormat ("гггг-ММ-дд'Т'ЧЧ: мм: сс.СССЗ")

...