GSON解译Json为DTO

除了用okhttp网络库外,还用到google的gson库。

1. uti类的对象一般都用懒汉模式。这次gson也是用懒汉模式。

public class GsonTools {

    private static Gson gson;

    // 饿汉式
    public static GsonTools gsonTools = new GsonTools();

    public GsonTools() {}

    public static GsonTools getInstance(){
        return gsonTools;
    }
    
}

2. GSON库有两种方法,叁返分别是List合集和String。

如果是返回多於一个Array,服务器的响应是这样。

[
    {"Name": "ChenKuang",
    "Age": "23",
    "Position" : "Full stack developer"}
    , 
    {"Name": "黑大猫",
    "Age": "23",
    "Position" : "数字媒体设计师"}
]

如果只是返回一个Array,服务器的响应是这样。

    {"Name": "ChenKuang",
    "Age": "23",
    "Position" : "Full stack developer"}

3. 所以对应GSON解释也有2种不同的写法。

如果是把多於一个Array的Json,解译成一个List<DTO>的集合,应用以下写法。

    /*
    *    @param [String]json
    *    @return [List<PostDTP>]postDTOs
    */
    public <T> List<T> getPost (String jsonString) {
        gson = new Gson();
        List<T> list = gson.fromJson(jsonString, new TypeToken<List<PostDTO>>() {}.getType());
        return list;
    }

如果是把一个Array的Json,解译成一个DTO,应用以下写法。

    /*
    *    @param [String]json
    *    @return [ResultDTO]resultDTO
    */
    public ResultDTO getLogin (String jsonString) {
        gson = new Gson();
        ResultDTO resultDTO = gson.fromJson(jsonString, ResultDTO.class);
        return resultDTO;
    }
原文地址:https://www.cnblogs.com/chenkuang/p/8111286.html