編集:私は混乱していました-ジャージではなくcxfを使用していました。注釈付きオブジェクトを、jacksonのObjectMapperに似たjsonに変換する方法はありますか?
元のメッセージ:
こんにちは。現在、jaxrsを使用してWeb応答をxml/jsonに変換しています。ただし、ここで実行したいのは、ObjectMapper(?)を使用してコード内に同等のjson文字列を生成することです。
たとえば、コントローラーとjaxb注釈付きの戻りオブジェクトがあるとします。
@Path("/foo")
@Produces({"application/json", "application/xml"})
public class FooController {
@GET
@Path("/some_action")
public TopDTO someAction(@QueryParam("arg") String arg) {
...
}
}
@XmlRootElement(name="topDTO")
@XmlAccessorType(XmlAccessType.NONE)
public class TopDTO {
...
@XmlAttribute(name="attr")
public String getAttr() {
return "blah";
}
@XmlElement(name="innerDTO")
public InnerDTO getInnerDTO() {
...
}
}
@XmlRootElement(name="innerDTO")
@XmlAccessorType(XmlAccessType.NONE)
public class InnerDTO {
...
}
http://myserver /.../foo.jsonを押すと、かなりのjsonが出力されます。
{"topDTO":{"@attr":"blah","innerDTO":...}}
今、私はその正確なjsonを内部で生成できるようにしたいと思います:
ObjectMapper mapper = new ObjectMapper();
AnnotationIntrospector introspector = new JaxbAnnotationIntrospector();
mapper.getSerializationConfig().setAnnotationIntrospector(introspector);
mapper.getSerializationConfig().setSerializationInclusion(Inclusion.ALWAYS);
mapper.getSerializationConfig().set(SerializationConfig.Feature.AUTO_DETECT_FIELDS, false);
mapper.getSerializationConfig().set(SerializationConfig.Feature.WRAP_ROOT_VALUE, true);
return mapper.writeValueAsString(snapshotDTO);
ただし、これはまったく機能していないようです。注釈付きの属性と要素のほとんどが欠落しており、jaxrs出力などの場合のように、属性の前に「@」が付いていません。
私は何か簡単なものが欠けていますか?jaxrs自体はどのようにして注釈付きオブジェクトをjson文字列に変換しますか?
ありがとう!ジョー