Какой тип исключения должен выдать преобразователь Джексона, чтобы указать недопустимое значение - PullRequest
0 голосов
/ 07 июня 2019

С помощью следующей аннотации я могу сказать Джексону использовать класс Converter для дополнительной пост-обработки десериализованных данных:

@JsonDeserialize(converter = MyConverter.class)
public MyConstrainedMap property;

Например, следующий конвертер преобразует карту в пользовательскийвведите MyConstrainedMap:

public static class MyConverter extends StdConverter<Map<String, Object>, MyConstrainedMap> {

    @Override
    public MyConstrainedMap convert(Map<String, Object> rawMap) {
        // ... check values
        return new MyConstrainedMap(rawMap);
    }
}

Мой вопрос: что делать, если преобразование невозможно?Было бы целесообразно выбросить одно из исключений Джексона, например, JsonMappingException, но это исключение проверено, и convert не допускает никаких проверенных исключений.

Так что мне следует делать вместо этого.Бросай RuntimeException?

1 Ответ

0 голосов
/ 07 июня 2019

(Ответ довольно прост, но, поскольку я не смог найти что-либо по этому вопросу в Интернете, я подумал, что все равно поделюсь им.)

Да , выбрасывание любого RuntimeException - правильное решение, если что-то не может быть преобразовано. Это исключение будет затем обернуто Джексоном в JsonMappingException, поэтому результирующее поведение будет таким же, как и в случае других ошибок синтаксического анализа.

...