Переименуйте поля JSON, используемые MappingJacksonJsonView в Spring

Я использую MappingJacksonJsonView для сериализации для JSON класса, однако, я хотел бы иметь возможность переименовать некоторые из полей из имени по умолчанию на основе имени получателя.

Это потому, что я должен вывести имена полей, такие как "delete_url" и "delete_type" для загрузки файла jQuery. Я использую @Jsonserialize аннотацию, чтобы вручную выбрать поля для сериализации.

@JsonAutoDetect(getterVisibility = Visibility.NONE)
public interface Picture {

    @JsonSerialize
    String getName();

    @JsonSerialize
    String getDelete_url();

    ...

Например, я вынужден вызвать метод getDelete_url(), в то время как я хотел бы назвать его getDeleteUrl(), но все же вывести ключ "delete_url" при сериализации в JSON.

Ответ 1

Вы должны иметь возможность квалифицироваться с помощью @JsonProperty.

@JsonAutoDetect(getterVisibility = Visibility.NONE)
public interface Picture {

  @JsonSerialize
  @JsonProperty("name")
  String getName();

  @JsonSerialize
  @JsonProperty("delete_url")
  String getDeleteUrl();

  //...

Ответ 2

Вы пытались использовать аннотацию @JsonProperty?

"Определяет имя логического свойства, то есть имя поля объекта Json, которое будет использоваться для свойства: если пустой String (который является значением по умолчанию), будет использовать имя поля, которое аннотируется."