2

JSON 出力で名前と要素の順序を選択するために、RestEasy で JAXB アノテーションを使用しようとしています。

どういうわけか、RestEasy のドキュメントに可能と書かれていても、うまくいきません。

ここにいくつかのコード:

@XmlRootElement(name = "translation")
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "translation", propOrder = {
    "key",
    "value"
})
public class TranslationDTO {

  public TranslationDTO() {}
  public TranslationDTO(Translation translation) {
    setKey(translation.getTranslationKey().getValue());
    setValue(translation.getContent());
    //setCreationDate(translation.getCreatedTimestamp());
  }

  @XmlElement(name = "key")
    private String key;

  @XmlElement(name = "value")
    private String value;

    //private Date creationDate;

    @XmlElement(name = "key")
    public String getKey() {
    return key;
  }

    public void setKey(String key) {
    this.key = key;
  }

    @XmlElement(name = "value")
    public String getValue() {
    return value;
  }

    public void setValue(String value) {
    this.value = value;
  }

    /*@XmlElement(name = "creationDate")
    public Date getCreationDate() {
    return creationDate;
  }

    public void setCreationDate(Date creationDate) {
    this.creationDate = creationDate;
  }*/

}

そしてここに出力例があります:

{
    "name":"i18nhelp",
    "currentVersion":"1",
    "currentTotalKeys":28,
    "oldTotalKeys":0,
    "totalLanguages":2,
    "languageDtos":[{
        "name":"Anglais",
        "iso639":"en",
        "totalCurTrans":28,
        "newCurTrans":28,
        "oldTrans":0
    },
    {
        "name":"Français",
        "iso639":"fr",
        "totalCurTrans":28,
        "newCurTrans":28,
        "oldTrans":0
    }]
}

JAXB アノテーションはまったく考慮されていないようです。

どんなアイデアも考慮されます...

4

1 に答える 1

2

アプリケーション サーバーとして JBoss (または現在は WildFly と呼ばれています) を使用している場合、Jackson ( http://jackson.codehaus.org/ ) JSON マーシャラーを使用して RestEasy を体験している可能性があります。これには独自の注釈があります。 Jackson のホームページからリンクされているドキュメント。それらは「単なる」JAXB よりも少し表現力が高いため、JSON 出力のみを具体的に対象とする場合は、それらを検討することをお勧めします。

例が示すように、JAXB のみを使用したい場合は、この回答jboss-deployment-structure.xmlで詳しく説明されているように、で使用する resteasy プロバイダー モジュールを指定することで、Jackson から別のものに切り替えることができます。

于 2013-09-02T14:25:03.020 に答える