JSON.toJSONString无法传递boolean
在使用JSON.toJSONString转json格式的时候,后端是springboot,前端是vue,每次返回的User对象总是少一个字段state
User实体类:
public class User {
private int id;
private String username;
private String password;
private String email;
private String role;
private Boolean state;
接口:
@RequestMapping("/alluser")
@ResponseBody
public String getUserList(QueryInfo queryInfo) {
int numbers = userDao.getUserCount("%" + queryInfo.getQuery() + "%");
int pageStart = (queryInfo.getPageNum() - 1) * queryInfo.getPageSize();
List<User> users = userDao.getAllUser("%" + queryInfo.getQuery() + "%",pageStart,queryInfo.getPageSize());
HashMap<String, Object> res = new HashMap<>();
res.put("numbers",numbers);
res.put("data",users);
String s = JSON.toJSONString(res);
return s;
}
开始是按上面写的,发现state字段一直传不到前端,在网上找了很多方法,最后还是没能解决,后面听说springboot传数据给vue不需要转json,直接返回也可以接收,就改成下面这样了
@RequestMapping("/alluser")
@ResponseBody
public Map getUserList(QueryInfo queryInfo) {
int numbers = userDao.getUserCount("%" + queryInfo.getQuery() + "%");
int pageStart = (queryInfo.getPageNum() - 1) * queryInfo.getPageSize();
List<User> users = userDao.getAllUser("%" + queryInfo.getQuery() + "%",pageStart,queryInfo.getPageSize());
HashMap<String, Object> res = new HashMap<>();
res.put("numbers",numbers);
res.put("data",users);
return res;
}
直接返回Map,在前端就可以接收到全部字段了
前端:
data() {
return {
queryInfo: {
query: "",
pageNum: 1,
pageSize: 10,
},
userList: [],
total: null,
},
methods: {
async getUserList() {
const {data:res} = await this.$http.get("/alluser",{params: this.queryInfo});
this.userList = res.data;
this.total = res.numbers
}
}
无法将state字段传递回去,具体原因还没找到,不管是改get、set,还是JSON.toJSONString
的时候加那些参数,都不管用~