Десериализовать атрибут даты json в LocalDate - PullRequest
0 голосов
/ 05 июля 2018

Я пытаюсь десериализовать атрибут даты в формате json формата "2018-05-27" с помощью Gson. Я хочу, чтобы дата была в формате LocalDate после десериализации.

Для ввода json:

{ "id": 1, "имя": "тест", "startDate": "2018-01-01", "endDate": "2018-01-05", }

Я получаю сообщение об ошибке для startDate и endDate:

java.lang.IllegalStateException: ожидалось BEGIN_OBJECT, но было STRING

1 Ответ

0 голосов
/ 18 июля 2018

Как мы можем это сделать:

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();

, а затем

YourClassName yourClassObject = gson.fromJson(msg, YourClassName.class);
...