使用 Jersey REST 服务从 JSON 解析 bean 的最佳方法
Best way to parse bean from JSON with Jersey REST Service
我有一个 Java bean 定义如下:
public class Person {
private String name;
private String surname;
public Person(String name, String surname) {
this.name = name;
this.surname = surname;
}
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
public String getSurname() {
return this.surname;
}
public void setSurname(String surname) {
this.surname = surname;
}
}
我写了这个简单的 REST 方法,如果我通过 POST:
{ "name": "John", "surname": "Doe"}
有效。
import com.google.gson.Gson;
@Path("/person")
public class PersonRestService {
@POST
@Consumes(MediaType.APPLICATION_JSON)
public Response getMsg(String inputJsonObj) {
Persona p = new Gson().fromJson(inputJsonObj, Person.class);
System.out.println("Name: " + p.getName());
System.out.println("Surname: " + p.getSurname());
return Response.status(200).build();
}
}
但为什么我必须接受字符串作为方法的输入字段?
我尝试在 getMsg 方法中接受一个 Person 对象,但仍然像这样传递一个 JSONObject:
{ "name": "John", "surname": "Doe"}
但我收到 HTTP 状态 415 – 不支持的媒体类型。
直接在方法中接收 Person 对象而不用在方法中用 Gson 解析它的最简单方法是什么?
提前致谢:)
but I got an HTTP Status 415 – Unsupported Media Type.
You need a JSON Provider。还要确保您的 POJO 具有默认构造函数。
如果您使用的是 Maven,则只需添加以下依赖项
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-json-jackson</artifactId>
<version>${jersey2.version}</version>
</dependency>
如果您手动添加 jar,请查看 。
我有一个 Java bean 定义如下:
public class Person {
private String name;
private String surname;
public Person(String name, String surname) {
this.name = name;
this.surname = surname;
}
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
public String getSurname() {
return this.surname;
}
public void setSurname(String surname) {
this.surname = surname;
}
}
我写了这个简单的 REST 方法,如果我通过 POST:
{ "name": "John", "surname": "Doe"}
有效。
import com.google.gson.Gson;
@Path("/person")
public class PersonRestService {
@POST
@Consumes(MediaType.APPLICATION_JSON)
public Response getMsg(String inputJsonObj) {
Persona p = new Gson().fromJson(inputJsonObj, Person.class);
System.out.println("Name: " + p.getName());
System.out.println("Surname: " + p.getSurname());
return Response.status(200).build();
}
}
但为什么我必须接受字符串作为方法的输入字段?
我尝试在 getMsg 方法中接受一个 Person 对象,但仍然像这样传递一个 JSONObject:
{ "name": "John", "surname": "Doe"}
但我收到 HTTP 状态 415 – 不支持的媒体类型。
直接在方法中接收 Person 对象而不用在方法中用 Gson 解析它的最简单方法是什么?
提前致谢:)
but I got an HTTP Status 415 – Unsupported Media Type.
You need a JSON Provider。还要确保您的 POJO 具有默认构造函数。
如果您使用的是 Maven,则只需添加以下依赖项
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-json-jackson</artifactId>
<version>${jersey2.version}</version>
</dependency>
如果您手动添加 jar,请查看