在spring rest应用程序上下文中,我正在尝试创建一个通用的响应bean。
目的是避免为每个方法创建一个特定的bean。
我想通过将各种属性绑定到地图来使用标准字段,例如状态和消息。
考虑以下示例:
public class ResponseRestDefault extends HashMap {
private String status;
private String message;
public ResponseRestDefault() {
}
public void addParam(String key, String value) {
this.put(key, value);
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
用法
@RequestMapping(value = "response", method = RequestMethod.GET)
public ResponseEntity<ResponseRestDefault> response() {
ResponseRestDefault response = new ResponseRestDefault();
response.setStatus("success");
response.setMessage("ok");
response.addParam("test", "value");
return ResponseEntity.ok(response);
}
Json结果:
{
"test": "value"
}
json结果是否可以包含地图字段和类属性?
答案 0 :(得分:0)
您需要修改响应类。确保你有map的getter和setter方法。
public class ResponseRestDefault {
private String status;
private String message;
private Map<String, String> map = new HashMap<>();
public ResponseRestDefault() {
}
public void setMap(String key, String value) {
map.put(key, value);
}
public Map<String, String> getMap()
{
return map;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
您将收到以下格式的回复:
{
"status": "success",
"message": "ok",
"map": {
"test": "value"
}
}