Инициализация поля с помощью пользовательской аннотации в JavaJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Инициализация поля с помощью пользовательской аннотации в Java

Сообщение Anonymous »

У меня есть класс Student и TopStudent, как показано ниже:

Код: Выделить всё

public class Person {
private String id;
private String name;
private int order;
}

Код: Выделить всё

public class Student extends Person {
@NotEmpty
private int classId;
private String className;
}
Я хочу установить значение для поля заказа при десериализации объекта.
Я попытался настроить @JsonDeserialize, как показано ниже, и использовать его для как Person, так и Student (я не хочу создавать 2 класса для JsonDeserialize):

Код: Выделить всё

public class Student extends JsonDeserializer {

@Override
public List deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JacksonException {
ObjectMapper mapper = new ObjectMapper();
JsonNode node = mapper.readTree(jsonParser);
ObjectReader reader = mapper.readerFor(new TypeReference() {});
List requestDTOS = reader.readValue(node);
IntStream.range(0, requestDTOS.size())
.forEach(i -> requestDTOS.get(i).setOrder(i));
return requestDTOS;
}
}
Проблема заключается в том, что полезная нагрузка — Person. Я получил ошибку с @NotEmpty, потому что у меня нет classId в полезной нагрузке запроса.
Есть в любом случае можно сделать это с помощью специальной аннотации?
Что-то вроде того, как я могу создать собственную аннотацию и реализовать метод для установки порядка?

Подробнее здесь: https://stackoverflow.com/questions/793 ... on-in-java
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»