1

JAX-RSリソースを使用したapplication/json出力に、JAXBアノテーションを使用してオブジェクトを使用しようとしています。RestEasyを使用してJBossAS7で実行しています(最新バージョン-7.1.1.Finalと2.3.4.Finalの両方)。問題は、JSON出力をカスタマイズしたいということです。JettisonとJacksonのどちらを使用するかは気にしないことに注意する必要がありますが、エラーなしでJettisonを動作させる(アプリケーションをデプロイする)ことしかできませんでした。また、可能であれば、オブジェクトにJAXBアノテーションのみを付けたいと思いますが、必ずしも必要ではありません。

1)XmlAttribute注釈付きフィールド内の「@」を省略したい。Jettisonでそれを行う方法をプロパティで見つけましたが、JBossAS7でそれを設定する方法がわかりません。ContextResolverの例が見つかりませんでした。

2)「通常の」JSON配列が欲しいのですが。

@XmlRootElement(name = "root")
@XmlAccessorType(XmlAccessType.FIELD)
public class Root {

    @XmlElementRef(type = Entry.class, required = false)
    // no difference with @XmlElement
    private Set<Entry> entries;
}

にシリアル化

{"entries":
  {"entry":[{...},{...},{...}]}
}

そして私は期待します

{"entries":
  [
   {"entry":{...}},
   {"entry":{...}},
   {"entry":{...}}      
  ]
}

または単に(XmlRootElementを省略)

{"entries":
 [{...},{...},{...}]
}

3)前述したように、どのプロバイダー(Jettison / Jackson)を使用するかは気にしませんが、アプリケーションのMaven依存関係をエラーなしでデプロイ可能に正しく設定する方法の実例を見つけるのは困難です。これまで私が使用しているもの:

    <dependency>
        <groupId>org.jboss.resteasy</groupId>
        <artifactId>resteasy-jaxrs</artifactId>
        <version>${resteasyVersion}</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>org.jboss.resteasy</groupId>
        <artifactId>resteasy-jaxb-provider</artifactId>
        <version>${resteasyVersion}</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>org.jboss.resteasy</groupId>
        <artifactId>resteasy-jettison-provider</artifactId>
        <version>${resteasyVersion}</version>
        <!--<scope>provided</scope>-->
        <exclusions>
            <exclusion>
                <groupId>javax.xml.bind</groupId>
                <artifactId>jaxb-api</artifactId>
            </exclusion>
            <exclusion>
                <groupId>com.sun.xml.bind</groupId>
                <artifactId>jaxb-impl</artifactId>
            </exclusion>
            <exclusion>
                <groupId>javax.xml.stream</groupId>
                <artifactId>stax-api</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

すべての回答をありがとう

4

1 に答える 1

0

これまでのところ、ジャクソンを機能させ、プロバイダー固有の注釈 (@JsonProperty ... など) を使用して問題を解決しました。JAXB ソリューションのみを見つけようとしましたが、これも受け入れることができます。

ところで私の依存関係

    <dependency>
        <groupId>org.jboss.resteasy</groupId>
        <artifactId>resteasy-jaxrs</artifactId>
        <version>${resteasyVersion}</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>org.jboss.resteasy</groupId>
        <artifactId>resteasy-jaxb-provider</artifactId>
        <version>${resteasyVersion}</version>
    </dependency>
    <dependency>
        <groupId>org.jboss.resteasy</groupId>
        <artifactId>resteasy-jackson-provider</artifactId>
        <version>${resteasyVersion}</version>
    </dependency>
于 2012-10-04T15:31:41.600 に答える