我正在使用 Spring MVC 创建一个宁静的 API。我有两个不同的 API 端点,我需要以两种不同的方式序列化相同的 POJO。我在下面说明了相同的内容:
课程 API
url - /course/{id}
response - {
"id": "c1234",
"name": "some-course",
"institute": {
"id": "i1234",
"name": "XYZ College"
}
}
我的Course
Pojo 就是按照上面的结构,所以默认的序列化是有效的。
class Course {
private String id;
private String name;
private Institute institute;
//getters and setters follow
}
class Institute {
private String id;
private String name;
//getters and setters follow
}
现在,对于另一个Students
API
url - /student/{id}
response - {
"id":"s1234",
"name":"Jon Doe",
"institute": {
"id": "i1234",
"name": "XYZ college"
},
"course": {
"id": "c1234",
"name": "some-course"
}
}
我的Student
课看起来像这样:
class Student {
private String id;
private String name;
private Course course;
//getters and setters follow
}
请注意,类中没有institute
属性,Student
因为机构可以从course.getInstitute
吸气剂中传递确定。但这最终会形成类似于课程 API 的序列化结构。如何在不修改 POJO 结构的情况下仅为学生 API 使用自定义序列化。
我想到了 N 个解决方案,这是我想知道的最优雅和首选的解决方案。