您的位置:首页 > 其它

如何返回想要的数据格式

qq_41708308 2019-07-09 07:10 519 查看 https://blog.csdn.net/qq_41708

  有时候我们在前台页面接收后台返回的数据时,数据格式不是我们需要的,这时我们就可以在后台对数据格式进行处理后再返回给前台。还有的时候我们用到的一些插件中的方法,它们也有它们特定的数据格式,只有返回的数据格式符合它们的要求才能出来效果。我最近就遇到了一个问题就跟数据格式有关,问题解决后就想跟大家分享一下。
  先跟大家说一下我要做的是什么。我要做的就是把查询到的数据绑定到前端表格中。因为之前是使用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的,表格数据绑定上去了:

标签: