json学习 json格式处理
json数据格式:
规范的格式应该是包括数据返回状态(一般就是false/true),状态码(比如200,7000)
,消息(比如“获取数据成功”/“获取数据失败”),数据对象
@RestController注解
例子1:
有这样一个页面 , 用来显示用户的账户记录数据,并且需要显示每个月的 收入 支出合计
,在分页的时候涉及到一些问题,需要对返回的Json格式做处理,处理起来比较麻烦,后端返回的Json数据格式形式如下:
{
"code": "0",
"result": {
"monthAmount": [
{
"date": "2017-09",
"income": 6000000,
"expend": 1233800
}
],
"billList": [
{
"id": 2004,
"amount": 1000000,
"balance": 4776200,
"type": "1",
"sourceId": "7",
"orderNumber": "20170914100000294222",
"mchNumber": "v1500949333578",
"mchName": "大王杂货店",
"date": "2017-09-14 16:58:52"
}
]
}
}
分析以上Json数据格式,分为2个数组,一个是合计数组,一个是账户记录,
我们需要将两个数组处理,将相同月份的数据展示在一起,组成新的我们需要的Json格式
如下:
"arr": [
{
"date": "本月",
"income": 6000000,
"expend": 1233800,
"items": [
{
"week": "今天",
"weekdate": "16:58",
"amount": 1000000,
"balance": 4776200,
"statusText": "团体购卡",
"type": "1",
"logo": "1"
}
]
}
]
例子2:
首先定义返回实体Resul
package com.steven.utils.result;
/**
* 数据返回实体
* @author Administrator
*
*/
public class Result {
private Integer code; //状态码
private Boolean isSuccess;//状态
private String massege;//消息
private Object result;//数据对象
/**
* 无参构造器
*/
public Result(){
super();
}
/**
* 只返回状态,状态码,消息
* @param statu
* @param code
* @param massege
*/
public Result(Boolean success,Integer code,String massege){
super();
this.isSuccess=success;
this.code=code;
this.massege=massege;
}
/**
* 只返回状态,状态码,数据对象
* @param statu
* @param code
* @param object
*/
public Result(Boolean success, Integer code, Object result){
super();
this.isSuccess = success;
this.code = code;
this.result = result;
}
/**
* 返回全部信息即状态,状态码,消息,数据对象
* @param statu
* @param code
* @param massege
* @param result
*/
public Result(Boolean success, Integer code, String massege, Object result){
super();
this.isSuccess=success;
this.code=code;
this.massege=massege;
this.result=result;
}
public Integer getCode() {
return code;
}
public void setCode(Integer code) {
this.code = code;
}
public Boolean getIsSuccess() {
return isSuccess;
}
public void setIsSuccess(Boolean isSuccess) {
this.isSuccess = isSuccess;
}
public String getMassege() {
return massege;
}
public void setMassege(String massege) {
this.massege = massege;
}
public Object getResult() {
return result;
}
public void setResult(Object result) {
this.result = result;
}
}
测试代码UserController
/**
* 查询所有用户
* @throws Exception
*/
@RequestMapping(value="/user/findAll.htm",method=RequestMethod.GET=GET)
public void findAll(HttpServletResponse response) throws Exception{
List<User> list = userService.findAll();
if(list.isEmpty()){
Json.toJson(new Result(false,7000,"没有数据",null),response);
return;
}
List<User> listuser = new ArrayList<User>();
for(User entity : list){
User user = new User();
user.setAdd_time(entity.getAdd_time());
user.setDelete_status(entity.getDelete_status());
user.setId(entity.getId());
user.setLast_login_time(entity.getLast_login_time());
user.setName(entity.getName());
user.setPwd(entity.getPwd());
listuser.add(entity);
}
Result result = new Result(true,200,"成功",listuser);
Json.toJson(result,response);
}
显示结果
{
"code": 200,
"isSuccess": true,
"massege": "成功",
"result": [{
"add_time": 1521368553000,
"delete_status": false,
"id": 3,
"last_login_time": 1521368553000,
"name": "李四",
"pwd": "123456"
}]}