ジャージーを使用して実装されたJAX-RSRESTサービスがあります。JAX-RS / Jerseyの優れた機能の1つは、いくつかのJavaアノテーションを振りかけるだけでPOJOをRESTサービスに簡単に変換できることです...JAXBアノテーションを使用してPOJOをJSONに変換するための非常に簡単なメカニズムを含みます。
ここで、このクールなJSON化機能をREST以外の目的で利用できるようにしたいと思います。これらのオブジェクトの一部を、JSONテキストとしてディスクにシリアル化できるようにしたいと思います。シリアル化するJAXBオブジェクトの例を次に示します。
@XmlRootElement(name = "user")
public class UserInfoImpl implements UserInfo {
public UserInfoImpl() {}
public UserInfoImpl(String user, String details) {
this.user = user;
this.details = details;
}
public String getUser() { return user; }
public void setUser(String user) { this.user = user; }
public String getDetails() { return details; }
public void setDetails(String details) { this.details = details; }
private String user;
private String details;
}
ジャージーは、追加情報なしでこれらの1つをjsonに変えることができます。ジャージーが私のようなニーズのためにAPIでこの機能を公開したかどうか疑問に思っていますか?私は今のところそれを見つけることができませんでした...
ありがとう!
UPDATE 2009-07-09:Providersオブジェクトを使用して、ほぼ正確にやりたいことができることを学びました。
@Context Providers ps;
MessageBodyWriter uw = ps.getMessageBodyWriter(UserInfoImpl.class, UserInfoImpl.class, new Annotation[0], MediaType.APPLICATION_JSON_TYPE);
uw.writeTo(....)
...これにより、オブジェクトがjsonとして任意の出力ストリームに書き込まれます。これは私にとっては完璧ですが、@Componentオブジェクトから@Contextを使用してProvidersオブジェクトに到達することしかできません。通常の注釈のないPOJOからアクセスする方法を知っている人はいますか?ありがとう!