Используйте JAX-RS GenericType для сопоставления объектов Джексона - PullRequest
0 голосов
/ 10 февраля 2020

Я хочу написать прокси для javax.ws.rs.client.SyncInvoker:

    @Override
    public <T> T get(GenericType<T> responseType) {
        String payload = delegate.get(String.class);
        // very important logic...
        return objectMapper.readValue(payload, responseType); // fix this
    }

Конечно, код выше не компилируется, потому что Джексон ничего не знает о GenericType от jax-rs. Кажется, что я мог бы использовать один из этих методов:

public <T> T readValue(String content, TypeReference valueTypeRef)
public <T> T readValue(String content, JavaType valueType)

Но я запутался, находя правильный способ конвертировать GenericType в TypeReference или JavaType.

1 Ответ

2 голосов
/ 10 февраля 2020

Продвижение моего комментария к ответу. Попробуйте это:

JavaType javaType = objectMapper.constructType(responseType.getType())
...