Преобразование всего нескольких JSON полей в объект API - PullRequest
0 голосов
/ 19 июня 2020

В ответе JSON, который мне возвращает API, у меня более 100 полей, но меня интересуют только 3 поля. Например, если ниже приведен полный ответ JSON

"text": {
        "data": "Click Here",
        "size": 36,
        "style": "bold",
        "name": "text1",
        "hOffset": 250,
        "vOffset": 100,
        "alignment": "center",
        "onMouseUp": "sun1.opacity = (sun1.opacity / 100) * 90;"
    }

Мне нужны только 3 поля

"data": "Click Here",
"size": 36,
"style": "bold"

Это мой объект ответа в ArunApi. java будет выглядеть как

private String data;
private Integer size;
private String style;

Когда я делаю REST-вызов (ниже показан фрагмент), он не работает

var response = webClient
                .get()
                .uri(endPoint)
                .retrieve()
                .bodyToMono(ArunApi.class)
                .block();

Поскольку у меня всего 3 поля в моем API, преобразование вообще не происходит. Пожалуйста, помогите

Ответы [ 3 ]

1 голос
/ 19 июня 2020

Вы можете аннотировать свой класс с помощью @JsonIgnoreProperties(ignoreUnknown = true), если вы используете библиотеку Джексона. В противном случае, в зависимости от того, какую библиотеку вы используете, вы можете выполнить поиск конфигурации, чтобы игнорировать поля.

https://github.com/FasterXML/jackson-annotations

0 голосов
/ 19 июня 2020

Вы можете попробовать использовать абстрактный класс с аннотациями JsonTypeInfo и JsonSubTypes для получения данных, а затем сопоставить с любым нужным вам подклассом. Например:

@JsonTypeInfo(
        use = JsonTypeInfo.Id.NAME,
        property = "type")
@JsonSubTypes({
        @JsonSubTypes.Type(value = RecurringTriggerJsonModel.class, name = "RECURRING"),
        @JsonSubTypes.Type(value = SimpleTriggerJsonModel.class, name = "SIMPLE"),
        @JsonSubTypes.Type(value = CronTriggerJsonModel.class, name = "CRON")
})
public abstract class TaskTriggerJsonModel {

}
0 голосов
/ 19 июня 2020

Вы можете проанализировать всю строку JSON с помощью GenSON. С помощью функции parseKeys() вы можете получить HashMap, содержащий все ключи, и извлечь первые три. GenSON - это новая библиотека, которую я создал из-за проблем, похожих на вашу. Ссылка: https://github.com/EvgeniGenchev/GenSON-lib.

...