#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
для переименования данных для вывода
Спасибо всем вам за помощь