使用 cxf JSONProvider 将 Java 转为 JSON

标签 java json cxf

我需要将使用 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>

将它注入(inject)到我的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 的选项,而且它更容易使用。

关于使用 cxf JSONProvider 将 Java 转为 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14711836/

相关文章:

mysql - 我应该如何在我的数据库中存储优惠券类型?

java - 在 CXF 中使用 swagger 生成离线文档

java - 列出 spring boot cxf 中的所有其余服务 url

java - 如何在没有任何监听驱动程序的情况下在java中实现嗅探器?

java - ViewPager 在运行后按下新 Activity 时崩溃

java - Hamcrest 匹配器在字符串列表中没有重复项?

python - 如何在 Python 中检查神秘的反序列化对象

java - 如果条件为真,Libgdx 计时器每 5 秒一次,直到条件为真

javascript - 从变量访问 JSON 值

java - CXF 在 View 模式中打开 session