У меня есть класс, глядя, как это:маршализацию параметр JSON @POST
public class Test {
@JsonProperty("name")
private String name;
public Test(){}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
Также есть класс конечных точек с помощью javax.ws.rs:
@Path("/Test")
public class Endpoint {
@POST
@Consumes("application/json")
@Produces("application/json")
@HeaderParam("Accept") @DefaultValue("application/json")
public Response createTest(String json) {
return Response.status(Response.Status.ACCEPTED).entity(json).build();
}
}
Это работает, как ожидалось.
Вопрос: Как сделать createTest() взять класс «Test» в качестве параметра вместо «String»?
Trial: Отправка следующее дает «415 неподдерживаемых Тип носителя» при использовании «Test» в качестве параметра к createTest():
POST ../Endpoint/ HTTP/1.1
Host: localhost:8080
Accept: application/json
Content-Type: application/json
Cache-Control: no-cache
Postman-Token: 56d06798-2b32-57fc-c22a-0240aceb8f98
{
"name": "Kalle"
}
Вы можете использовать '@ FormParam' ожидать аргумент как класс, или вы можете использовать объект картографа для разбора JSON в классе .. – z21
ObjectMapper работает, но гораздо более приятно с«авто "unmarshall. '@FormParam (" test ") Строка json' не приводит к значению (null). '@FormParam (« test ») Test test' приводит к _com.sun.jersey.spi.inject.Errors.processErrorMessages_ при запуске сервера ... – Grains