1

JAX-RS / JAXB および JPA を使用して REST Web サービスを作成しています。

@GET
@Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
public List<MyObject> getList() {
    List<MyObject> resultList = em.createNamedQuery(
            "MyObject.findAll").getResultList();
    return resultList;
}

戻り値

{
    "MYObject": [
        {
            "attribute": "value"
        },
        {
            "attribute": "value"
        }
    ]
}

およびxmlの場合:

    <mYObject>
      <MObject>
        <attribute>value</attribute>
      </MyObject>
      <MyObject>
        <attribute>value</attribute>
      </MyObject>
    </mYObject>

ラッパー要素を取り除くにはどうすればよいですか? OK、xml にはルート要素 (mYObject) が必要ですが、名前を変更するにはどうすればよいですか? JSON 2 が次のような出力を持つことは可能ですか?

   [
        {
            "attribute": "value"
        },
        {
            "attribute": "value"
        }
    ]

==> Wrapper オブジェクトがなく、すべてのオブジェクトを含む単純な配列だけですか?

4

3 に答える 3

0

私があなたを正しく理解しているかどうかはわかりません。しかし、私はあなたが望むと思います:

  1. mYObject の名前を変更する
  2. MyObject を取り除く

質問 1 については、

-- @XmlRootElement(name="NOTmYObject") を使用して、NOTmYObject としてオーバーライドできます。

質問 2 については、

-- POJO のデータ構造を HTTP の json とは異なるものにしたい場合、JaxB はこの種の柔軟性を想定していません。JaxB は、サービスとクライアントの間の契約のように厳密にデータ構造を扱います。xsd ファイルを使用してこのコントラクトを定義するのは、より簡単です。または、その柔軟性が本当に必要な場合は、代わりにジャクソンを検討することをお勧めします。

于 2013-02-04T08:00:48.257 に答える
-1

に注釈を付けるために使用@XmlValueします。MyObjectattribute

于 2013-02-01T15:52:02.453 に答える