zoukankan      html  css  js  c++  java
  • Gson使用

    1、json字符串转list

    ArrayList<NodeBean> nodeList = (ArrayList<NodeBean>) new Gson().fromJson(
                        selectNextNodeRspMsg.getRSP_BODY().getResultObject().toString(),
                        new TypeToken<ArrayList<NodeBean>>() {
                        }.getType());

    返回值是new TypeToken<ArrayList<NodeBean>>() {}.getType()); 的类型

    1、泛型使用

    没有引入泛型之前时写法:

    public class UserResult {
        public int code;
        public String message;
        public User data;
    }
    //=========
    public class UserListResult {
        public int code;
        public String message;
        public List<User> data;
    }
    //=========
    String json = "{..........}";
    Gson gson = new Gson();
    UserResult userResult = gson.fromJson(json,UserResult.class);
    User user = userResult.data;
    
    UserListResult userListResult = gson.fromJson(json,UserListResult.class);
    List<User> users = userListResult.data;

    上面有两个类UserResultUserListResult,有两个字段重复,一两个接口就算了,如果有上百个怎么办?不得累死?所以引入泛型。

    //不再重复定义Result类
    Type userType = new TypeToken<Result<User>>(){}.getType();
    Result<User> userResult = gson.fromJson(json,userType);
    User user = userResult.data;
    
    Type userListType = new TypeToken<Result<List<User>>>(){}.getType();
    Result<List<User>> userListResult = gson.fromJson(json,userListType);
    List<User> users = userListResult.data;

    看出区别了么?引入了泛型之后虽然要多写一句话用于获取泛型信息,但是返回值类型很直观,也少定义了很多无关类。

    参考:

    你真的会用Gson吗?Gson使用指南(一)   https://www.jianshu.com/p/e740196225a4
    你真的会用Gson吗?Gson使用指南(二)  https://www.jianshu.com/p/c88260adaf5e
    你真的会用Gson吗?Gson使用指南(三)
    你真的会用Gson吗?Gson使用指南(四)

     
  • 相关阅读:
    A Complete Tutorial to Learn Data Science with Python from Scratch
    OpenGL学习--08--基本渲染(灯光)
    OpenGL学习--07--模型加载(obj)
    OpenGL学习--06--键盘与鼠标交互
    OpenGL学习--05--纹理立方体--代码
    OpenGL学习--05--纹理立方体--BMP文件格式详解(转载)
    OpenGL学习—04--彩色立方体
    OpenGL学习--03--矩阵
    OpenGL学习--02--绘制一个红色三角形
    OpenGL学习--01--打开一个窗口
  • 原文地址:https://www.cnblogs.com/xyfaneast/p/10972439.html
Copyright © 2011-2022 走看看