如何返回想要的数据格式
2019-07-09 07:10
1841 查看
有时候我们在前台页面接收后台返回的数据时,数据格式不是我们需要的,这时我们就可以在后台对数据格式进行处理后再返回给前台。还有的时候我们用到的一些插件中的方法,它们也有它们特定的数据格式,只有返回的数据格式符合它们的要求才能出来效果。我最近就遇到了一个问题就跟数据格式有关,问题解决后就想跟大家分享一下。
先跟大家说一下我要做的是什么。我要做的就是把查询到的数据绑定到前端表格中。因为之前是使用bsgrid插件来绑定表格数据的,现在改用layui插件来绑定表格数据,所以就去翻阅了一下layui的API文档,
使用layui绑定表格数据需要返回的对象包含四个字段:code(表示状态码)、msg(表示描述)、count(表示数据条数)、data(表示数据集)。状态码和描述可以不用管他们,所以我就创建了一个包含这上面四个字段的类并添加了它们的get,set方法和一个构造器。代码如下:
public class LayuiTableData<T> { private int code; private String msg; private int count; private List<T> data; public LayuiTableData(int count, List<T> data) { this.count = count; this.data = data; } public int getCode() { return code; } public void setCode(int code) { this.code = code; } public String getMsg() { return msg; } public void setMsg(String msg) { this.msg = msg; } public int getCount() { return count; } public void setCount(int count) { this.count = count; } public List<T> getData() { return data; } public void setData(List<T> data) { this.data = data; } }
接下来我们把查询到的数据用那个类包装一下传递给jsp页面看看会怎样。Servlet代码以及查询结果如下:
public void tbCommoditySearch(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String content = request.getParameter("content"); String nodeId = request.getParameter("nodeId"); boolean bool = Boolean.valueOf(request.getParameter("check")); int contentType = Integer.valueOf(request.getParameter("contentType")); List<CommodityDataVo> commodityList = iCommodityService.findAllByC( nodeId, contentType, content, bool); LayuiTableData<CommodityDataVo> lyData = new LayuiTableData<CommodityDataVo>( commodityList.size(), commodityList); JSONObject jsonO = new JSONObject(); jsonO.put("data", lyData); PrintWriter out = response.getWriter(); out.write(jsonO.toString()); out.flush(); out.close(); }
页面显示返回的数据不符合规范,因为这种绑定表格数据的形式是查看不来返回值的,所以我就另外写了一个post提交并把返回值给打印到了控制台,来看看返回的数据是什么格式。
它多了一层data把它包起来了,数据需要的是里面的data,这是因为我们在后台给它转换成json对象的时候加上的,可是不转json对象又不行,那么我们就可以试着把里面的数据提到外面来,就像转成json时那样,我写了一个接口方法特地用来转换这个用来绑定表格数据的json对象。代码如下:
public static String toJson(LayuiTableData<?> lyData) { JSONObject jsonObject = new JSONObject(); jsonObject.put("code", lyData.getCode()); jsonObject.put("count", lyData.getCount()); jsonObject.put("data", lyData.getData()); jsonObject.put("msg", lyData.getMsg()); return jsonObject.toString(); }
然后把Servlet的代码就变成这样:
public void tbCommoditySearch(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("utf-8"); String content = request.getParameter("content"); String nodeId = request.getParameter("nodeId"); boolean bool = Boolean.valueOf(request.getParameter("check")); int contentType = Integer.valueOf(request.getParameter("contentType")); List<CommodityDataVo> commodityList = iCommodityService.findAllByC( nodeId, contentType, content, bool); LayuiTableData<CommodityDataVo> lyData = new LayuiTableData<CommodityDataVo>( commodityList.size(), commodityList); PrintWriter out = response.getWriter(); out.write(ToJsonUtil.toJson(lyData)); out.flush(); out.close(); }
最后就可以看到结果是OK的,表格数据绑定上去了:
相关文章推荐
- egg:如何设置返回的数据格式是json,还是xml
- 如何在jsp页面下载后台服务器返回的数据并保存为txt格式
- PHP如何返回json格式的数据
- ajax请求返回Json格式数据如何循环输出成table形式
- ajax请求返回Json格式数据如何循环输出成table形式
- 如何让Asp.net webAPI返回JSON格式数据
- 如何在前台(不限gridview,datalist,repeater)绑定数据后再进行判断,返回想要的结果
- 如何将ajax请求返回的Json格式数据循环输出成table形式
- java 如何返回json格式数据
- ADO.NET Data Service如何直接支持用Json格式返回数据
- boostrap table接收到后台返回的数据格式不一致 如何处理
- SSH:Struts2的Action如何返回JSON格式的数据?
- 如何将ajax请求返回的Json格式数据循环输出成table形式
- 后台返回一个string类型的json格式数据,前台js如何读取?
- 在josnp数据请求中,如何将返回的数据修改成自己需要的格式
- 如何让webapi只返回json格式数据
- ADO.NET Data Service如何直接支持用Json格式返回数据
- ajax如何处理服务器返回的3种数据格式
- ajax请求返回Json格式数据如何循环输出成table形式
- SpringMVC中在使用@ResponseBody时如何将Date类型的日期返回指定格式的json数据