JerseyでREST-APIを作成しています。これを行うには、PluralSightのコースに従っています。Jersey-media-moxy:APPLICATION_JSON @XmlElementアノテーションを無視する
jersey-media-moxy依存関係(v2.26)を使用してJersey 2.2をインストールしました。私は、JSONに解析することが返されて、次のリソースがあります。
@XmlRootElement
public class Playlist {
private int id;
private String naam;
private int eigenaarID;
private Boolean owner;
public void setData(int id, String naam, int eigenaarID) {
this.id = id;
this.naam = naam;
this.eigenaarID = eigenaarID;
if(eigenaarID == 0) {
owner = false;
} else {
owner = true;
}
}
@XmlElement(name="id")
public int getID() {
return id;
}
@XmlElement(name="name")
public String getNaam() {
return naam;
}
public Boolean getOwner() {
if(eigenaarID == 0) {
return false;
}
return true;
}
public ArrayList<Track> getTracks(){
return new ArrayList<Track>();
}
}
を(@Produces(MediaType.APPLICATION_XML)付き)I出力XMLた場合は、「getNaam」のプロパティが正しく、「名前」に改名されますの代わりに、 "ナム"。 JSON(@Produces(MediaType.APPLICATION_JSON))を出力すると、プロパティの名前が変更されるだけでなく、すべてのプライベートプロパティも出力されます。何が問題ですか?
私が期待するよう 'アプリケーション/ JSON'は、XML固有の注釈を気にしません。私自身。 '@ XmlElement'のバージョンですが、JSON(メタ情報を複製する)のためのカスタムデシリアライザ、またはいくつかのアノテーションを調べる必要があります。あるいは、すべてのメディアに対して動作します。 –
Jerseyの依存バージョンを混用しないでください。 –
@peeskilletこれは確かに私の問題でした。すべての苦労の後、私はジャクソンに行くことを選択ので、私は、 '' org.glassfish.jersey.media ジャージーメディア-JSON-ジャクソン \t \t \t 2.26 \t \t を追加しました。最初はうまくいきませんでした。バージョン番号を2.2に変更しました(私はJersey 2.2を使用しているためです)。最後に! –