Код: Выделить всё
final var typeRef = new TypeReference() {};
final List list = mapper.readValue(input, typeRef);
final MyType first = list.get(0);
Код: Выделить всё
T convert(final String input) {
final var typeRef = new TypeReference() {};
final List list = mapper.readValue(input, typeRef);
return list;
}
final MyType first = list.get(0);
Я хочу десериализовать и развернуть экземпляры универсальных типов, не предоставляя полную сигнатуру типа на сайте вызова. . Сайт вызова должен интересоваться только внутренним (обернутым) типом, поскольку это единственный тип, с которым он будет взаимодействовать. Учитывая следующие определения записей:
Код: Выделить всё
private record MyResponse(MyResult result) {}
private record MyResult(List values) {}
private record MyStringValue(String name) {
@Override public String toString() {
return "'" + name + "'";
}
}
Код: Выделить всё
MyResult convert(final String input, final TypeReference typeRef) {
try {
return objectMapper.readValue(input, typeRef).result();
} catch (final JsonProcessingException ex) {
throw new RuntimeException(ex);
}
}
У меня:
Код: Выделить всё
List unwrap(final String input, final TypeReference typeRef) {
return convert(content, typeRef).values();
}
Код: Выделить всё
final List values = unwrap(input, new TypeReference() {});
// or with diamond operator:
final List values = unwrap(input, new TypeReference() {});
Код: Выделить всё
final List values = unwrap(input, new TypeReference() {});
List unwrap(final String input, final TypeReference typeRef) { //
Подробнее здесь: [url]https://stackoverflow.com/questions/79185626/derive-typereference-for-wrapper-type-from-nested-type[/url]
Мобильная версия