REST服务-动态参数的JSON映射
下面是我想从REST服务返回的REST服务-动态参数的JSON映射,rest,jersey-2.0,Rest,Jersey 2.0,下面是我想从REST服务返回的JSON响应 { "id" : 123, "name" : "ABC", } 对于上面的JSON响应,我可以创建一个POJO类 public class Student{ private long id; private String name; //getters and setters } 因此,我可以编写一个getservice来返回Student对象,然后将其转换为JSON @GET @Produces(MediaT
JSON
响应
{
"id" : 123,
"name" : "ABC",
}
对于上面的JSON
响应,我可以创建一个POJO
类
public class Student{
private long id;
private String name;
//getters and setters
}
因此,我可以编写一个getservice
来返回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}
}
这里,
JSON
响应中的params
是一个对象
类型,该对象的属性不是固定的。对于每个请求,它都会有所不同,比如有时它可以有3个属性,有时它没有属性。我不知道如何为这个需求创建我的POJO
类。有人能给我一个建议吗?除非你不需要什么特别的东西,否则你应该按照如下方式设计:
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);
}
}
学生:
public class Student{
private long id;
private String name;
//getters and setters
private StudentParameters studentParameters;
public setStudentParameters(final StudentParameters studentParameters) {
this.studentParameters = studentParameters;
}
}
不要创建复杂的层次结构,例如
Map
它会使整个结构复杂化。您使用的JSON提供程序是什么?Jackson?请注意,您的POJO很可能是DTO,而不是ORM实体。REST将端点映射到操作,而不是将资源映射到实体。根据积垢,可以有重叠的ofc。但是,通过这种映射,除此之外的任何东西都将失败。Ofc。如果这不是目的,那么将JSON映射到一个对象是完全有效的。@peeskillet,是的,我正在使用Jackson只需在学生中为参数使用映射,就像bodo说的那样。它会给你想要的结果。
public class Student{
private long id;
private String name;
//getters and setters
private StudentParameters studentParameters;
public setStudentParameters(final StudentParameters studentParameters) {
this.studentParameters = studentParameters;
}
}