一般的Spring项目,RestController通过@ResponseBody,return一个实体类,序列化成JSON返回前端。
@GetMapping("/test")
@ResponseBody
public User test() {
User u=new User();
u.setId(1);
u.setName("LEO");
return u;
}前端接收到的数据:
{id:1,"name":"LEO"}具体的原因就不说了,现在我手头上一个项目就要求返回的是JSONObject或JSONArray。
当初想的是:
@GetMapping("/test")
@ResponseBody
public JSONObject test() {
JSONObject data = new JSONObject();
data.put("id", 1000);
data.put("name", "LEO");
return data;
}但是前端接收到的数据却是:
{"empty":false}原因也简单,Spring使用Jackson作为序列化、反序列化工具,能将Java的Pojo等序列化/反序列化为JSON,但是面对元素的JSONObject、JSONArray对象,就没办法了。
解决方案1,就是返回String,程序里还是将结果构建为JSONObject、JSONArray,最后return的时候调用toString()即可。
解决方案2,将JSONObject、JSONArray转为Map、List,这是我采用的方案:
@GetMapping("/test1")
@ResponseBody
public DefaultResultDefaultResult的代码就不附上了。
| 留言与评论(共有 0 条评论) “” |