我想在dropwizard中使用Java / Jersey中的对象列表获取内容JSON正文
考虑json的身体
{
"tag1" : "value",
"parameter" : [
{
"name":"value1",
"content":"value2"
},
{
"name":"value1",
"content":"value2"
}
]
}
我试图接收请求
@POST
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public Response insertJob(
@PathParam("tag1")
String tag1,
@JsonProperty("parameter")
List<RequestParameter> parameter
) {
return Response.ok(parameter).build();
}
但我只得到"message": "Unable to process JSON"
。当我将正文更改为列表时
[
{
"name":"value1",
"content":"value2"
},
{
"name":"value1",
"content":"value2"
}
]
和java代码
@POST
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public Response insertJob(
List<RequestParameter> parameter
) {
return Response.ok(parameter).build();
}
我能够收到列表中的内容。如果列表中有标记
,我该如何获取内容答案 0 :(得分:4)
为请求创建一个pojo类
import com.fasterxml.jackson.annotation.JsonProperty;
import java.util.List;
public class Job {
private String tag1;
@JsonProperty("parameter")
private List<RequestParameter> parameters;
public String getTag1() {
return tag1;
}
public void setTag1(String tag1) {
this.tag1 = tag1;
}
public List<RequestParameter> getParameters() {
return parameters;
}
public void setParameters(List<RequestParameter> parameters) {
this.parameters = parameters;
}
}
public class RequestParameter {
private String name;
private String content;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
}
然后将控制器更改为此
@Path(value = "/job")
@POST
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public Response insertJob(
Job test
) {
return Response.ok(test).build();
}
这是输出