版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/seeker_lqq/article/details/85244837
场景:javaWeb项目中后台接口返回前端的数据的格式有多种,在此我只写一下最常用的JOSN格式吧
案例如下:
@ResponseBody
@RequestMapping("/queryByUser")
public R queryByUser(@RequestBody(required = false) User user) {
//下面模拟一下数据,一些数据的判断,就省略了哟
//1.1 返回一条数据
User user1=new User();
user1.setName("张三");
user1.setPassword("123456");
User user2=new User();
user2.setName("李四");
user2.setPassword("123456");
//1.2 返回多条数据
List<User> list=new ArrayList<User>();
//把bean对象添加到集合
list.add(user1);
list.add(user2);
R r = R.ok();//继承HashMap
r.put("user", user1);
r.put("list", list);
r.put("total",list.size());
return r;
}
相关说明:
1.1 @RequestBody(required = false) User user 接收请求为的参数为一个json格式 bean对象,required默认为true,就是必须 参数必须传值,不然报空指针异常,false则允许为空,因为json支持bean对象传参,参数就通常可以bean对象,很方便。
1.2 返回json要在方法上加上@ResponseBody,返回json数据,其作用在方法上的, 表示该方法的返回结果直接写入 HTTP response body 中,一般在异步获取数据时使用【也就是ajax】,在使用 @RequestMapping后,返回值通常解析为跳转路径,但是加上 @ResponseBody 后返回结果不会被解析为跳转路径,而是直接写入 HTTP response body 中。 比如异步获取 json 数据,加上 @ResponseBody 后,会直接返回 json 数据。@RequestBody 将 HTTP 请求正文插入方法中,使用适合的 HttpMessageConverter 将请求体写入某个对象。
1.3 R r = R.ok();继承HashMap,封装返回json数据,R实体如下:
import java.util.HashMap;
import java.util.Map;
/**
* 返回数据
*/
public class R extends HashMap<String, Object> {
private static final long serialVersionUID = 1L;
public R() {
put("code", "0");
put("message", "数据处理成功");
}
public static R error() {
return error("500", "未知异常,请联系管理员");
}
public static R error(String msg) {
return error("500", msg);
}
public static R error(String code, String msg) {
R r = new R();
r.put("code", code);
r.put("message", msg);
return r;
}
public static R ok(String msg) {
R r = new R();
r.put("message", msg);
return r;
}
public static R ok(Map<String, Object> map) {
R r = new R();
r.putAll(map);
return r;
}
public static R ok() {
return new R();
}
public R put(String key, Object value) {
super.put(key, value);
return this;
}
}
好了,就到这里啦! (^-^)