今天写JSON接口的时候,遇到了些问题,把自己学到的记下来,也希望对大家有帮助。
工具:配置了tomcat的Eclipse和浏览器就可以。
首先,前端需求是希望后端返回如下格式的JSON接口.
{
"status": 0,
"msg": "成功",
"contents":
{ "rows":[
{
"recId": 155,
"recName": "xxx",
" payment ": "xxx",
"area": "xxx",
"startTime": "2017-03-14 00:00:00",
"endTime": "2017-03-25 00:00:00",
"startDateFormat": "3月14日",
"endDateFormat": "3月25日",
"applyId": 445,
"applyStatus": 2,
"applyStatusValue": "xxx",
"img": "http://localhost:8080/xxx/xxx/xxx.jpg",
"logo": "http://localhost:8080/xxx/xxx/xxx.jpg"
},{}]
}
}
在http://json.cn/网站上解析后,结构如下:
接下来是实现这个接口的核心代码:
// 封装查询结果集合到JsonArray
private JSONObject revResultSet2Array(List<Object> objectList,HttpServletRequest request) {
JSONObject contents = new JSONObject() ;//生成JSONObject对象,它对应着图一中的Object对象。
JSONArray jsonArray = new JSONArray();//生成JSONArray数据,它对应着图二的数据Array.
JSONObject jsonObject; //它对应着图三中的Array数组里的Object对象,展开的是它的属性。
for (Object obj : objectList) {
Object[] objs = (Object[]) obj;
System.out.println(objs[0] + " - " + objs[1] + " - " + objs[2]);
jsonObject = new JSONObject();
//向
jsonObject.put("xxx", CommUtil.null2Long(objs[0])); //往该对象里面添加属性值
jsonObject.put("xxx", CommUtil.null2String(objs[1])); //往该对象里面添加属性值
jsonObject.put("xxx", CommUtil.null2String(objs[1])); //往该对象里面添加属性值
jsonArray.add(jsonObject); //往数据里加入对象
}
contents.element("rows", jsonArray);//往对象里加入数组。
return contents;
}
在程序中调用这个方法并传入参数就可以得到JSON对象的返回。我们给前端提供这个接口就可以了。
@RequestMapping("/applyList")
@ResponseBody
public JSONObject findList(HttpServletRequest request, String pageIndex, String pageSize, String status) {
ret.put("contents",revResultSet2Array(xxx,request));
}