在动态信封中包装 json 响应 - Rest api
Posted
技术标签:
【中文标题】在动态信封中包装 json 响应 - Rest api【英文标题】:Wrapping json response in dynamic envelop - Rest api 【发布时间】:2020-12-07 05:48:43 【问题描述】:我有一个带有一个 Rest API 的简单 spring-boot 应用程序。我想通过使用客户端休息 Web 服务来发送学生数据(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",
"name": "stack",
"address": "Pune"
学生班级如下:
Class Student
String id;
String name;
String address;
【问题讨论】:
【参考方案1】:如果学生对象是动态的,则将学生对象包装在地图中,否则返回学生对象
public ResponseEntity<?> getStudent(...)
...
if(dynamic)
return ResponseEntity.status(HttpStatus.OK)
.body(Collections.singletonMap("data", studentObj));
else
return ResponseEntity.status(HttpStatus.OK).body(studentObj);
【讨论】:
【参考方案2】:您可以有一个 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",
"name": "stack",
"address": "pune"
【讨论】:
以上是关于在动态信封中包装 json 响应 - Rest api的主要内容,如果未能解决你的问题,请参考以下文章
使用 REST Api,如何在我的类型化请求模型中包含“任何类型的 json”?