Я успешно делал это в 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, т. Е. У него есть конструктор по умолчанию, и он имеет сеттеры и геттеры, которые находит маршаллер. У меня нет специальных JSON-тегов в ReqData, но у меня есть @XmlRootElement (name = "data") вверху для маршаллера XML и тегов @XmlElement на установщиках.
Я использую отдельные компоненты для ввода и вывода, но, насколько я знаю, вы можете использовать один и тот же компонент.
Клиентская программа отправляет строку JSON в теле объекта запроса и устанавливает для заголовков Context-Type и Accept значение "application / json".