使用cxf JSONProvider将Java转换为JSON



我需要将从带有CXF cxf-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>

将其注入我的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还有其他方法可以做到这一点?

我建议您使用Jackson ObjectMapper将java对象转换为JSON。配置Jackson ObjectMapper有很多选项,而且使用起来更容易。

最新更新