我正在尝试使用Jersey和Jackson(尽管其他任何方式进行JSON编组工作)以某种形式将其导入我的系统(无论是POJO还是其他表示)。
基本上我只需要数据部分。我试图将GenericTypes与列表一起使用,但这是一个嵌套列表,我只是不确定该怎么做。很多赞美的帮助,我真的很感激!
{
"total": 4,
"data": [
{
"descriptor": "",
"multiInstance": false,
"active": false
},
{
"descriptor": "Apparel",
"multiInstance": true,
},
{
"descriptor": "abcd123",
"multiInstance": false,
},
{
"descriptor": "abcd",
"multiInstance": false,
}
]
}
这是我正在尝试使用的课程。我需要一个班级列表。
public class customObject {
@JsonProperty(value = "descriptor")
private String descriptor;
@JsonProperty(value = "multiInstance")
private Boolean multiInstance;
//getters and setters
}
编辑:
我在这里使用它。
CustomObjectResponse WDCOResponse = 资源 .TYPE(MediaType.APPLICATION_JSON) 。接受(MediaType.APPLICATION_JSON) .header(“Authorization”,getToken())。get(WDCOResponse.class);
但它仍无效。
EDIT2: 想出来了!谢谢大家。 :)
我必须添加注释以告诉它忽略如果找不到某些东西,我回来的一些JSON没有完全形成,因为并非所有字段都是绝对必要的。
答案 0 :(得分:1)
如果您提供的对象是您传递给控制器的对象,那么您将需要一个包装器对象来包含这样的列表:
public class CustomRequest {
@JSonProperty(value = "total");
private Integer total;
@JsonProperty(value = "data")
private List<CustomObject> data;
// getters/setters
}
public class CustomObject {
@JsonProperty(value = "descriptor")
private String descriptor;
@JsonProperty(value = "multiInstance")
private Boolean multiInstance;
// getters/setters
}
然后您的控制器将只有注释,表明RequestBody是CustomRequest类:
@Controller
public class JSONController {
@RequestMapping(value="sendData")
public @ResponseBody CustomResponse sendData(
@RequestBody CustomRequest request)
{
return null;
}
}
如果您仍然收到错误,请提供详细的错误或问题。谢谢!
答案 1 :(得分:0)
您可以使用POJO:
public class Response {
int count;
List<customObject> data;
}
并从那里访问数据:
for (customObject ob : response.data) {
// process ig
}