shuouyang 2022-07-08 19:49 采纳率: 33.3%
浏览 102

retrofit+Gson对kotlin数据类的解析失败(泛型擦出)

项目中使用Retrofit+Gson去请求数据,但是同一个bean类用java可以和kotlin数据类不行

类似如下的数据结构

{
    "code": 1,
    "msg": "请求成功",
    "data": [
        {
            "id": 4,
            "type_name": "xxxx",
        },
        {
            "id": 5,
            "type_name": "xxx",
        },
        {
            "id": 6,
            "type_name": "xxxx",
        }
    ]
}

在项目中一般会这么设计bean类

public class BaseResponse<T> {

    private int code;
    private T data;
    private String msg;
    //省略构造方法getter和setter
}
public class Feedback {
    private int  id;
    private String type_name;
    //省略构造方法getter和setter
}

在使用retrofit进行请求时

        Observable<Response<BaseResponse<List<Feedback>>>> feedbackList = apiService.getFeedbackList();

以上步骤能够正常获取到数据

但是由于我嫌弃java使用Feedback时每次都需要添加getter和setter等方法,想着使用kotlin的数据类来实现,如下
data class Feedback(
    var id: Int = 0,
    var type_name: String = "",
    )
//某博客说全部设置初始值能够有默认构造方法
data class Feedback(
    val id: Int = 0,
    val type_name: String = "",
    )
data class Feedback(val id: Int, val type_name: String)

换成kotlin的数据类后,其他都没动,这三种方式,没有一个可以被正常解析的。

其实之前也遇到过,看到很多开源项目都直接封装一个完整的bean类,未做泛型处理,想知道怎么做才能使kotlin的数据类被正常解析
  • 写回答

2条回答

  • 不会写代码的猴子 Android领域优质创作者 2022-07-09 10:13
    关注
    class Feedback {
        private val id = 0
        private val type_name: String? = null
    }
    
    评论

报告相同问题?

问题事件

  • 创建了问题 7月8日

悬赏问题

  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
  • ¥15 请问Lammps做复合材料拉伸模拟,应力应变曲线问题
  • ¥30 python代码,帮调试
  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿