如何解决在动态信封中包装json响应-Rest API
我有一个简单的带有一个Rest API的spring-boot应用程序。我想通过使用客户端剩余的Web服务来发送Student数据(以JSON格式)。 但是我想用“ DATA”包裹该学生信息,并且应该像下面这样动态。
if(dynamic == true)
// envelop the student information in "DATA" and send student info to client.
else
// Do not envelop student data and send student info to client.
学生当前的JSON格式。
{
"id": "1-abcd","name": "stack","address": "Pune"
}
预期的json格式。
{
"data": {
"id": "1-abcd","address": "Pune"
}
}
学生班如下:
Class Student{
String id;
String name;
String address;
}
解决方法
如果学生对象是动态的,则将其包装在地图中,然后返回,否则返回学生对象
public ResponseEntity<?> getStudent(...){
...
if(dynamic){
return ResponseEntity.status(HttpStatus.OK)
.body(Collections.singletonMap("data",studentObj));
} else {
return ResponseEntity.status(HttpStatus.OK).body(studentObj);
}
}
,
您可以拥有一个Envelope
类,例如:
public class Envelope {
Student data;
public Student getData() {
return data;
}
public void setData(Student data) {
this.data = data;
}
public Envelope(Student data) {
super();
this.data = data;
}
}
还有您在if-else
中的逻辑:
// using Jackson library: import com.fasterxml.jackson.databind.ObjectMapper;
ObjectMapper mapper = new ObjectMapper();
Student student = new Student("1-abcd","stack","Pune");
if (dynamic) {
Envelope envelope = new Envelope(s);
return mapper.writeValueAsString(envelope)
}
return mapper.writeValueAsString(student)
输出
包装:
{
"data": {
"id": "1-abcd","name": "stack","address": "pune"
}
}
解包:
{
"id": "1-abcd","address": "pune"
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。