RESTEasyで成功しています。XML と JSON の両方を使用して生成するように設定しました。リクエスト ハンドラは次のとおりです。
@POST
@Produces(["application/json","application/xml"])
@Consumes(["application/json","application/xml"])
@Path("/create")
public Response postCreate(
ReqData reqData) {
log.debug("data.name is "+ data.getName());
...
return Response.status(Response.Status.CREATED)
.entity(whatever)
.location(whateverURI)
.build();
}
ReqData は JavaBean です。つまり、デフォルトのコンストラクターがあり、マーシャラーが検出するセッターとゲッターがあります。ReqData には特別な JSON タグはありませんが、XML マーシャラーの先頭に @XmlRootElement(name="data") があり、セッターに @XmlElement タグがあります。
入力用と出力用に別々の Bean を使用していますが、私が知る限り、同じ Bean を使用できます。
クライアント プログラムは、リクエストのエンティティ ボディで JSON 文字列を送信し、Context-Type ヘッダーと Accept ヘッダーの両方を「application/json」に設定します。