我正在为我的CXF服务使用自定义类型,所有这些都可以使用Jackson序列化为JSON。 CXF提供XmlAdapter用于在XML和自定义数据类型之间进行转换。我遇到的问题是XmlAdapter只能在泛型中使用一个BoundType,因此我发现自己为每种数据类型编写了一个适配器,这似乎很浪费。
基本上我有:
public class JsonAdapter<T> extends XmlAdapter<String, T> {
private final Class<T> type;
private final ObjectMapper objectMapper;
public JsonAdapter(Class<T> type) {
this.type = type;
this.objectMapper = new ObjectMapper();
}
@Override
public T unmarshal(String v) throws Exception {
return objectMapper.readValue(v, type);
}
@Override
public String marshal(T v) throws Exception {
return objectMapper.writeValueAsString(v);
}
}
然后对于每种类型,我必须编写另一个适配器:
class MyTypeAdapter extends MyTypeAdapter<Client> {
public MyTypeAdapter() {
super(MyTypeAdapter.class);
}
}
有没有办法只使用一个适配器?