Как вывести API, имена которого отличаются от имен переменных?

#java #json #spring-boot #api #backend

Вопрос:

У меня есть сущность, подобная следующей

 @Data
@NoArgsCounstructor
@AllArgsConstructor
public class Class {
@JsonProperty("Data")
List<ClassData> classData;
}
 

Я хочу просмотреть это как «Данные» на выходе, но вместо этого в качестве поля указывается «ClassData». Я перепробовал кучу аннотаций, но, похоже, ничего не работает. Пожалуйста, скажите мне, как я могу получить такой результат.

Выход

 {
"classData":[]
}
 

Требуемая Производительность

 {
"Data":[]
}
 

Правка: Я получаю поле с другим именем, и мне нужно выдать вывод с каким-то другим именем. Например, я получаю входные данные в виде «ClassData» и выдаю выходные данные в виде «Данных»

Комментарии:

1. Дважды проверьте, что вы используете Jackson для сериализации.

Ответ №1:

Предполагая, что вы используете Jackson для сериализации/десериализации своих ресурсов, просто переименуйте поле POJO и classData в data , и Джексон будет использовать новое имя поля для создания вывода JSON.

Комментарии:

1. Разве это уже не должно сработать остроумно @JsonProperty ?

2. Это должно быть с учетом того, что операционная система использует Джексона и что последний настроен правильно. Однако неясно, правильно ли они используют Джексона.

3. Но тогда в чем смысл вашего ответа? Вы также можете скопировать и вставить код операции. Предполагая, что вы используете Джексона для сериализации/десериализации , имея в виду это предположение, оно уже должно работать.

4. Как упоминалось выше, нет четких указаний на то, что они используют Джексона. Кроме того, нет примеров кода, чтобы просмотреть то, что у них есть под рукой. Следовательно, при отсутствии доступной информации самый простой способ решить их проблему-просто переименовать поле.

Ответ №2:

У меня есть способ сделать это!

Вместо использования @JsonProperty using @JsonSetter для получения входных данных, а затем @SerializedName для переименования данных для вывода

Спасибо всем вам за помощь