使用工具类,让Json返回更得体,更好看

Posted cnliang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用工具类,让Json返回更得体,更好看相关的知识,希望对你有一定的参考价值。

本文章所用技术为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返回更得体,更好看的主要内容,如果未能解决你的问题,请参考以下文章

手把手教你如何让essay文章语言得体

[译] 如何在React中写出更优秀的代码

有没有更好的方法让这段代码线程安全? Thread_local static 似乎是一个生硬的工具

js_如何优化你的代码让它更好看

Word 文档的优秀代码片段工具或插件?

让iOS开发变得更有效率-分类工具类