首页  编辑  

SpringBoot中Controller如何直接返回JSON数据

Tags: /Java/   Date Created:
SpringBoot中,Controller要返回JSON数据,需要俩呢处理:
一个要用@ResponseBody注解Controller方法,强制返回的为数据体,而不是视图view的名字。
其次,最好要用produces强制返回的数据content-type为application/json,否则部分客户端解释可能是按html处理的。

示例:
@ResponseBody()
@GetMapping(value = "/reload", produces = {"application/json"})
public String reload(HttpServletRequest request) throws SchedulerException {
Map<String, String> data = new HashMap<>();
try {
data.put("trigger", this.toString());
} catch (Exception e) {
data.put("天降错误", e.getMessage());
}

AjaxResult ret = new AjaxResult(0, "成功", data);
return ret.toJSON();
}

-----------------------------------------------

/**
* AJAX 请求返回数据类
*/
public class AjaxResult {

/**
* 状态码,错误代码,可以为自定义的错误代码
*/
public int code;

/**
* 返回的错误信息,如果成功可以为空
*/
public String message;

/**
* 附加数据对象
*/
public Object data;

public AjaxResult() {
}

public AjaxResult(int code, String message, Object data) {
this.code = code;
this.message = message;
this.data = data;
}

public AjaxResult(int code, String message) {
this.code = code;
this.message = message;
}

@Override
public String toString() {
return "AjaxResult: code=" + code
+ ", message=" + message
+ ", data=" + data;
}

/**
* 转换为JSON字符串
* @return
*/
public String toJSON() {
return new Gson().toJson(this);
}

}