Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Deserialize date attribute of json into LocalDate

I am trying to de-serialize date attribute in json of format "2018-05-27" using Gson. I want date to be in LocalDate format after de-serialization.

For json input :

{ "id" : 1, "name" : "test", "startDate" : "2018-01-01", "endDate" : "2018-01-05", }

I am getting error for startDate and endDate :

java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING

like image 587
Shubham Pandey Avatar asked Jul 05 '18 05:07

Shubham Pandey


1 Answers

The way we can do this is :

private static final Gson gson = new GsonBuilder().registerTypeAdapter(LocalDate.class, new JsonDeserializer<LocalDate>() {
            @Override
            public LocalDate deserialize(JsonElement json, Type type, JsonDeserializationContext jsonDeserializationContext) throws JsonParseException {
                return LocalDate.parse(json.getAsJsonPrimitive().getAsString());
            }
        }).create();

and then

YourClassName yourClassObject = gson.fromJson(msg, YourClassName.class);
like image 170
Shubham Pandey Avatar answered Oct 03 '22 07:10

Shubham Pandey