Java Dropwizard反序列化数组
我正忙于一个应用程序,需要将数组作为put方法的参数之一注入POJO。不幸的是,数组没有得到正确处理,这导致了错误的请求-响应。要说明前端传递的JSON,如下所示:Java Dropwizard反序列化数组,java,json,jackson,dropwizard,Java,Json,Jackson,Dropwizard,我正忙于一个应用程序,需要将数组作为put方法的参数之一注入POJO。不幸的是,数组没有得到正确处理,这导致了错误的请求-响应。要说明前端传递的JSON,如下所示: { "name": "Jon", "surname": "Doe", "children": ["Chris", "Dave", "Sam"] } 以及我的Java表示: public class Person{ private String name; private String surna
{
"name": "Jon",
"surname": "Doe",
"children": ["Chris", "Dave", "Sam"]
}
以及我的Java表示:
public class Person{
private String name;
private String surname;
private List<String> children;
public Person(){
}
@JsonProperty
public String getName(){
return name;
}
@JsonProperty
public void setName(String name){
this.name=name;
}
@JsonProperty
public String getSurname(){
return surname;
}
@JsonProperty
public void setsurname(String surname){
this.surname=surname;
}
@JsonProperty
public List<String> getChildren(){
return children;
}
@JsonProperty
public void setChildren(List<String> children){
this.children=children;
}
}
如何正确处理JSON中数组的反序列化
编辑
我使用的是一个有角度的前端,我调用的方法如下:
function(json){
return $http({
url: API_URL.people+"/update/personID",
method: "PUT",
headers: {
'Content-Type': 'application/json',
'Accept': 'application/json'
},
data: json
});
}
其中json参数包含上述名称、姓氏和子项。看起来GET服务的定义不正确。它不应该定义人 根据http方法定义,GET http方法不能有正文。所以不能将Person作为输入参数 如果需要将Person发送到服务,则可能需要根据需要将http方法更改为POST或其他类似PUT的方法
@GET
@Timed
@UnitOfWork
@Path("/{userid}")
public Response getData(@PathParam("userid") LongParam userId) {
// Do some stuff with the person
}
结果是我提供的密码就像一个符咒。经过进一步调查,我在javascript对象中犯了一个错误,该对象被转换并作为JSON发送,这导致了错误。我很抱歉,这应该是一个Put方法。我据此对问题进行了编辑。谢谢你指出。你能分享你所得到的错误的stacktrace吗?不幸的是,服务器没有stacktrace。当我尝试访问路径时,只有400个错误的请求响应。您如何尝试调用该服务?你在用POSTMAN吗?我在用AJAX从我的角度前端调用它。你怎么知道是数组引起了问题?我猜是别的原因。你试过这个请求了吗?
@GET
@Timed
@UnitOfWork
@Path("/{userid}")
public Response getData(@PathParam("userid") LongParam userId) {
// Do some stuff with the person
}