问题
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
回答1:
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);
来源:https://stackoverflow.com/questions/51183967/deserialize-date-attribute-of-json-into-localdate