后端返回的数据格式是这样的 body:{
ret:{
meta:[{"colName":"采集时间"},{"colName":"列一"},{"colName":"列一阈值"}],
data:[{"采集时间":"2017-07-07","列一":"20170707","列一阈值":"equals20170707"},{"采集时间":"2017-07-04","列一":"20170704","列一阈值":"equals20170704"}]
}
}
由于数据库存的字段是一对多的关系 一个meta 对多个data中的对象可以有多个数据 可以这么认为 meta是一个标题列名 而data是数据是多条数据。数据库存储的字段是这样的 meta就存[{"colName":"采集时间"},{"colName":"列一"},{"colName":"列一阈值"}] 这样的jsonAarray数组一样的数据,而data存储的是对象是这样的{"采集时间":"2017-07-07","列一":"20170707","列一阈值":"equals20170707"}是大括号是对象 因此 meta可以直接读出来而data是需要拼接成数组后再读出来,具体代码如下:
@ResponseBody
@RequestMapping(value="")
public AjaxJson View(HttpServletRequest request){
AjaxJson j=new AjaxJson();
String id=request.getParameter("id");//---获取请求时候传过来的值 条件
String name=request.getParameter("name");
model model=service.findbyid(id);// model 是实体类 findbyid是根据条件获取 meta 标题 是一个字段
List<model> modelList=service.findbyname(name);//----因为data是多条数据所以用list 接受
JSONArray retListData=new JSONArray();//----JSON数组 申明一个数组
for(int i=0;i<modelList.size();i++){
JSONObject obj=JSON.parseObject(modelList.get(i).getValue());//---读取数据 变成JSON 对象 Object
retListData.add(obj);//---把每次的json对象放入到json数组里 把多个data 对象变成一个数组 输出来
}
//retListData 这个数组存储的是data数据就是这样的[{"采集时间":"2017-07-07","列一":"20170707","列一阈值":"equals20170707"},{"采集时间":"2017-07-04","列一":"20170704","列一阈值":"equals20170704"}]
JSONObject jsonarry=new JSONObject();//---申明一个json对象 放入meta 和 data 数据
JSONArray retListjson=JSON.parseArray(model.getmeta());//-----这个是把meta标题放到 json数组中 因为存储就是数组样式所以可以直接放入
jsonarry.put("meta",retListjson);//----把 retListjson就是把meta放入一个 json对象中
jsonarry.put("data",retListData);//---把 data也放入同一个json对象中
j.put("ret",jsonarray);//---因为 ret 是一个对象 不是数组 所以就直接返回就可以看到上图哪有的返回值了
return j;
}