0

CXF アプリケーションで最新の Jackson (2.2.3) を使用しています。

これが私のJacksonプロバイダーです:

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」値のないインスタンスを作成し、デバイス リストにデバイスを 1 つ作成しました。これをレンダリングすると、次のようになります。

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

「デバイス」を「デバイス」としてレンダリングするにはどうすればよいですか?

4

1 に答える 1

0

私はこれを理解することができました。重要な認識は、JAXB アノテーションが Jackson を混乱させている場合、おそらく Jackson にそれらを無視させるべきだということです。「JaxbAnnotationModule」の登録を削除しただけで、JSON と XML の両方の出力が正常になりました。ここで、より単純なプロバイダーではなく、「JacksonJaxbJsonProvider」を使用することに意味があるかどうかを検討する必要があります。

于 2013-11-09T19:42:16.327 に答える