1

CXFcxf-codegen-pluginを使用して WSDL ファイルから生成されたオブジェクトを JSON 文字列に変換する必要があります。それに対する解決策を見つけることができて幸運ではありません。

私が得た限りでは、CXF JSONProvider の Spring 構成を作成しました。

<bean id="jsonProvider" class="org.apache.cxf.jaxrs.provider.json.JSONProvider">
    <property name="dropRootElement" value="true"/>
    <property name="dropCollectionWrapperElement" value="false"/>
    <property name="serializeAsArray" value="true"/>
    <property name="ignoreNamespaces" value="true"/>
</bean>

それを私の豆に注入し、今私は使用しようとしています:

try {
    StringWriter writer = new StringWriter();

    jsonProvider.writeTo(
            evaluationType,
            EvaluationType.class,
            new Annotation[]{},
            MediaType.APPLICATION_JSON_TYPE,
            null,
            new StringOutputStream(writer));

    return writer.toString();
} catch (IOException e) {
    LOGGER.error("e", e);
    return "";
}

問題は、このメソッドにどのような注釈を付ける必要があるかということです。それに関するドキュメントはありません。私は得ています:

Caused by: com.sun.xml.bind.v2.runtime.IllegalAnnotationsException: 1 counts of IllegalAnnotationExceptions
com.company.test.evaluation.evaluation.EvaluationImpl$1 is a non-static inner class, and JAXB can't handle those.
    this problem is related to the following location:
        at com.company.test.evaluation.EvaluationImpl$1

これEvaluationImplは、このメソッドを呼び出すクラスです。このメソッドに提供する注釈の種類を教えてください。それとも、CXF JSONProviderを使用してこれを行う他の方法がありますか?

4

1 に答える 1

0

Jackson ObjectMapperを使用して、JavaオブジェクトをJSONJacksonを構成するための多くのオプションに変換することをお勧めしますObjectMapper。これにより、より使いやすくなります。

于 2013-02-07T08:34:01.273 に答える