让我们采取以下JSON
回复,我想从REST service
回复,
{
"id" : 123,
"name" : "ABC",
}
对于上述JSON
响应,我可以创建一个POJO
类,例如
public class Student{
private long id;
private String name;
//getters and setters
}
所以,我可以写一个GET service
来返回Student
对象,然后将其转换为JSON
。
@GET
@Produces(MediaType.APPLICATION_JSON)
public Response get(){
Student student = new Student();
student.setId(123);
student.setName("ABC");
return Response.ok(student).build();
}
工作正常。现在我想在我的JSON
响应中引入可选参数,如下所示,
{
"id" : 123,
"name" : "ABC",
"params" : {"param1":"xxx","param2":342}
}
此处params
响应中的JSON
是Object
类型,该对象的属性不固定。对于每个请求,它会有所不同,有时它可以有3个属性,有时则没有。我不知道如何为此要求创建POJO
课程。任何人都可以建议我如何做到这一点吗?
答案 0 :(得分:2)
除非您不需要任何特殊内容,否则您应该将其设计为:
public class Student{
private long id;
private String name;
//getters and setters
private Map<String, String> parameters = new HashMap<>();
public void add(String key, String value) {
parameters.put(key, value);
}
public void addAll(Map<String, String> map) {
parameters.putAll(map);
}
}
如果你需要类型安全,那么设计有点复杂,可以考虑使用类似的东西:
class StudentParameters {
long param1;
String param2;
}
和学生:
public class Student{
private long id;
private String name;
//getters and setters
private StudentParameters studentParameters;
public setStudentParameters(final StudentParameters studentParameters) {
this.studentParameters = studentParameters;
}
}
不要创建复杂的层次结构,例如Map<List<List>, List<List>>
,它会使整个结构复杂化。