java123999
java123999

Reputation: 7394

Gson - unparseable date error?

I have the following JSON and POJO

JSON:

{
      "startDate": "2018-09-18T12:00:00+0000",
      "endDate": "2018-09-18T14:00:00+0000",
      "startDateAsDate": 15372720000000
      "endDateAsDate": 1537279200000
    }

JAVA POJO:

public class ScheduledPeriod implements Comparator<ScheduledPeriod> {

    private String startDate = "";
    private String endDate = "";
    private Date startDateAsDate;
    private Date endDateAsDate;

     public Date getStartDateAsDate() {
        if (startDateAsDate != null) {
            return startDateAsDate;
        }
        try {
            startDateAsDate = (Date) SDF.parseObject(startDate);
            return startDateAsDate;
        } catch (Exception e) {
            return null;
        }
    }

    public Date getEndDateAsDate() {
        if (endDateAsDate != null) {
            return endDateAsDate;
        }
        try {
            endDateAsDate = (Date) SDF.parseObject(endDate);
            return endDateAsDate;
        } catch (Exception e) {
            return null;
        }
    }
}

Trying to parse JSON using GSON:

ScheduledPeriod scheduledPeriod = null;

 try {
            scheduledPeriod = new Gson().fromJson(jsonRequest, new TypeToken<ScheduledPeriod>() {
            }.getType());
        } catch (Exception e) {

        }

Error I am getting:

com.google.gson.JsonSyntaxException: 1537272000000
java.text.ParseException: Unparseable date: "1537272000000"

Why am I getting the error above? The date is valid?

Upvotes: 2

Views: 1813

Answers (1)

Amir Azizkhani
Amir Azizkhani

Reputation: 1804

base on this post you just register an adapter for Date :

Gson gson = new GsonBuilder().registerTypeAdapter(Date.class, new JsonDeserializer<Date>() {
                public Date deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context)
                        throws JsonParseException {
                    return new Date(json.getAsJsonPrimitive().getAsLong());
                }
            }).create();

ScheduledPeriod scheduledPeriod = gson.fromJson(jsonRequest, ScheduledPeriod.class);

Upvotes: 4

Related Questions