私はjacksonを使用して、私のオブジェクトをjsonに変換しています。オブジェクトには2つのフィールドがあります。
@Entity
public class City {
@id
Long id;
String name;
public String getName() { return name; }
public void setName(String name){ this.name = name; }
public Long getId() { return id; }
public void setName(Long id){ this.id = id; }
}
これをjQueryのオートコンプリート機能で使用するため、jsonで「id」を「value」として表示し、「label」として「name」を表示するようにします。ジャックソンのドキュメントはこれについて明確ではなく、リモートでも必要なことを行うように見えるすべての注釈を試しましたが、name
をlabel
として表示し、id
をjsonでvalue
として表示することはできません。
誰がこれを行う方法を知っていますか、これが可能であるかどうか?
@JsonPropertyを使用してみましたか?
@Entity
public class City {
@id
Long id;
String name;
@JsonProperty("label")
public String getName() { return name; }
public void setName(String name){ this.name = name; }
@JsonProperty("value")
public Long getId() { return id; }
public void setId(Long id){ this.id = id; }
}
Jackson 1.xにはorg.codehaus.jackson.annotate.JsonProperty
があり、Jackson 2.xにはcom.fasterxml.jackson.annotation.JsonProperty
があることに注意してください。使用しているObjectMapper(バージョン)を確認し、適切なアノテーションを使用していることを確認してください。
フィールドの名前を変更するもう1つのオプションがあります。
注釈付けできないサードパーティクラスを扱う場合、またはジャクソン固有の注釈でクラスを汚染したくない場合に便利です。
MixinsのJacksonのドキュメントは古いため、これは 例 でより明確になります。基本的には、必要な方法でシリアル化を行うmixinクラスを作成します。次に、ObjectMapperに登録します。
objectMapper.addMixIn(ThirdParty.class, MyMixIn.class);