1. 程式人生 > >使用工具類,讓Json返回更得體,更好看

使用工具類,讓Json返回更得體,更好看

fields vat value 技術分享 準備 java success csdn mapping

本文章所用技術為SpringMVC+JSON

利用工具類輕松將json返回到頁面中,而不用手動一個一個去映射

首先呢我們需要定義一個返回json的工具類Resp<T>,這個類呢,我們通常可以自由化配置,這裏只舉一個範例

import java.io.Serializable;
import java.util.Map;
 
/**
 *  A return Util to pages
 * @param <T> return data type
 */
public class Resp<T> implements Serializable {
 
    private
static final long serialVersionUID = 1L; private final static String SUCCESS_CODE = "200"; /** * The status returned to the page */ private String status; /** * Message returned to the page */ private String message; /** * Return data to the page
*/ private T data; /** * Other data that needs to be returned to the page */ private Map<String,Object> rtnMap; public Resp() { this.status = SUCCESS_CODE; this.message = "SUCCESS"; } public Resp(String status, String message, T data) {
this.status = status; this.message = message; this.data = data; } public Resp(String status, String message, T data, Map<String, Object> rtnMap) { this.status = status; this.message = message; this.data = data; this.rtnMap = rtnMap; } public String getStatus() { return status; } public void setStatus(String status) { this.status = status; } public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } public T getData() { return data; } public void setData(T data) { this.data = data; } public Map<String, Object> getRtnMap() { return rtnMap; } public void setRtnMap(Map<String, Object> rtnMap) { this.rtnMap = rtnMap; } }

在工具類創建好之後呢,我們就可以去action中測試啦,

在測試之前呢,先要準備好我們需要返回的數據,數據類型可以是各種實體類,Map對象啊等等.....

這裏呢我就用我自己寫好的一個bean類進行測試

@RequestMapping(value = "/jsonTest")
public Resp RtnTest(){
    // 使用Resp工具類,並設置返回數據類型
    Resp<Object> resp = new Resp<>();
    // 設置返回數據
    UserInfo userInfo = new UserInfo("Liang","21","male","10086");
    // 使用實體類換換工具轉換為Map
    Map<String,Object> map = EntityToMap.ConvertToMap(userInfo);
    // 兩種方式向頁面返回數據
    resp.setData(userInfo);
    resp.setRtnMap(map);
 
    return resp;
}

到這裏可能就有疑惑了 EntityToMap.ConvertToMap(userInfo);這個是用來幹嘛的呢?

EntityToMap也是一個很實用的工具類,可以將實體類對象轉換為map,用來對數據進行再次加工

import java.lang.reflect.Field;
import java.util.HashMap;
import java.util.Map;
 
public class EntityToMap {
    /**
     * @param obj Entity class that needs to be converted
     * @return ConvertedMapObject
     */
    public static Map<String, Object> ConvertToMap(Object obj) {
        Map<String, Object> rtnMap = new HashMap<>();
        if (obj == null) return null;
        Field[] fields = obj.getClass().getDeclaredFields();
        try {
            for (Field field : fields) {
                try {
                    Field f = obj.getClass().getDeclaredField(field.getName());
                    f.setAccessible(true);
                    Object o = f.get(obj);
                    rtnMap.put(field.getName(), o);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        } catch (SecurityException e) {
            e.printStackTrace();
        }
        return rtnMap;
    }
}

通過這兩個工具類呢,是不是很方便的可以將我們的數據返回到頁面中去了呢?

我們一起來看一下頁面中顯示的結果吧:

技術分享圖片

是不是很方便呢?

使用工具類,讓Json返回更得體,更好看