У меня есть класс, в котором я использую Джерси-клиент для десериализации. У этого класса есть метод, который выглядит так:Как сообщить клиенту Джерси эквивалент @JsonIgnoreProperties (ignoreUnknown = true) для каждого класса, который он десериализует?
public boolean isEmpty() {
return (code == null &&
label == null &&
codeSystem == null &&
codeSystemLabel == null &&
description == null &&
concept == null &&
alternateCode == null
);
Нет сеттера. Как-есть, это вызовет это исключение:
com.sun.jersey.api.client.ClientHandlerException: org.codehaus.jackson.map.exc.UnrecognizedPropertyException: Unrecognized field "empty" (Class com.app.models.CodedElementModel), not marked as ignorable
at [Source: [email protected]7d51; line: 1, column: 270] (through reference chain: com.app.models.LabOrderModel["code"]->com.app.models.CodedElementModel["empty"])
I've read this article, и получается, что я могу это исправить, поставив эту аннотацию на CodedElementModel
класс: @JsonIgnoreProperties(ignoreUnknown = true)
.
Проблема в том, что у меня есть много методов, выбрасывающих это исключение. Есть ли способ настроить Джерси-Клиента, чтобы он действовал так, как будто для каждого класса задано @JsonIgnoreProperties(ignoreUnknown = true)
, поэтому мне не нужно их вручную аннотировать? Я не хочу менять ~ 30 файлов, добавив эту аннотацию вручную. Это предотвратит такие ошибки в будущем, если кто-то добавит геттер без сеттера.
Вот как я создаю мой клиент Джерси:
DefaultClientConfig clientConfig = new DefaultClientConfig();
clientConfig.getFeatures().put(JSONConfiguration.FEATURE_POJO_MAPPING, Boolean.TRUE);
Client client = Client.create(clientConfig);
Я чувствую, что clientConfig
может иметь параметр, чтобы сделать это, но я не знаю, как его найти.
На самом деле я хочу его в формате JSON. Это поле 'empty' будет сохранять людей на разных языках от необходимости писать собственную реализацию' isEmpty() ', как у моих моделей. –
Кстати, этот метод 'register' не существует на моем« Клиенте »(может быть, это вещь джерси-2.0?) Знаете ли вы, как установить это в jersey 1.x? –
@tieTYT Yikes, извините ... Я не видел, что это был Джерси 1.x. Держитесь, к сожалению, немного сложнее; редактирование –