【问题标题】:Trouble getting desired json output with JacksonJaxbJsonProvider无法使用 JacksonJaxbJsonProvider 获取所需的 json 输出
【发布时间】:2013-11-07 22:02:09
【问题描述】:

我正在使用最新的 Jackson (2.2.3) 和 CXF 应用程序。

这是我的杰克逊提供者:

public class CustomJacksonJsonProvider extends JacksonJaxbJsonProvider {
    public CustomJacksonJsonProvider() {
        ObjectMapper mapper = new ObjectMapper();
        mapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
        JaxbAnnotationModule jaxbModule = new JaxbAnnotationModule();
        mapper.registerModule(jaxbModule);
        this._mapperConfig.setMapper(mapper);
    }
}

我有以下带注释的类。

@XmlType(name = "configInfo")
@XmlRootElement(name = "configInfo")
public class ConfigInfo {
    @XmlElement(name = "foo")
    private String  foo;
    @XmlElementWrapper(name = "devices")
    @XmlElement(name = "device")
    private List<Device>    devices;

    public final List<Device> getDevices() {
        if (devices == null)
            devices = new ArrayList<Device>();
        return devices;
    }
}

我创建了一个没有“foo”值的实例,并且在设备列表中创建了一个设备。当我渲染它时,我得到以下信息:

{"device":[{"name":"abc","type":"def"}]}

如何使“设备”呈现为“设备”?

【问题讨论】:

    标签: json jaxb jackson cxf


    【解决方案1】:

    我已经设法弄清楚了。关键的实现是,如果 JAXB 注释让杰克逊感到困惑,那么也许我应该让杰克逊忽略它们。我只是删除了“JaxbAnnotationModule”的注册,现在我的 JSON 和 XML 输出都很正常。我现在需要考虑使用“JacksonJaxbJsonProvider”而不是更简单的提供程序是否有意义。

    【讨论】:

      猜你喜欢
      • 2021-05-12
      • 2021-07-14
      • 2015-04-06
      • 1970-01-01
      • 2022-01-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-04
      相关资源
      最近更新 更多