Android 我如何处理Kotlin中GSON的空案例?
我开始从Java过渡到Kotlin。我有以下数据类:Android 我如何处理Kotlin中GSON的空案例?,android,kotlin,gson,android-room,Android,Kotlin,Gson,Android Room,我开始从Java过渡到Kotlin。我有以下数据类: 数据类网络响应构造函数(val title:String) 该类稍后将被GSON用于将JSON文件转换为该类的对象。但是,title可能会收到一个null 在Java中,从JSON转换为object时,这并不是一个问题(但由于我没有使用带字符串的?符号,所以可能是),但是在房间数据库中存储数据时,这肯定是一个问题,因为我不想在那里添加空值,而且我使用的是与@实体相同的类 在Java中,我曾经在setters中创建将null转换为某个值(比如
数据类网络响应构造函数(val title:String)
该类稍后将被GSON
用于将JSON文件转换为该类的对象。但是,title
可能会收到一个null
在Java中,从JSON转换为object时,这并不是一个问题(但由于我没有使用带字符串的?
符号,所以可能是),但是在房间
数据库中存储数据时,这肯定是一个问题,因为我不想在那里添加空值,而且我使用的是与@实体
相同的类
在Java中,我曾经在setters中创建将null转换为某个值(比如uuid)的add逻辑,但在这里我不能这样做,因为构造函数没有主体,我必须使用init
,这意味着我必须在构造函数之外声明变量,这也不是data
类的情况。我可以做些什么,以便:
data
课T
,而不是T?
(即不可为空)id
设置为null,我仍然可以创建一个实例,并且逻辑应该运行如果value==null,则返回
id
接收null
,我可以使用复杂的逻辑来生成唯一的id,但是如果说img\u url
接收null
,我可以简单地将其存储为“无数据”
(即,用于不同类型的零转换的多个逻辑)Gson
或Room
如果某个响应参数类型有可能为null,则必须选择以下选项之一:
数据类网络响应构造函数(val title:String?
数据类网络响应构造函数(val title:String=”“)
JsonDeserializer
,并编写逻辑以将null/empty值转换为您喜欢的值:
GsonBuilder().registerTypeAdapter(类型,MyCustomJsonDeserializer())
如果使用非空默认值“”创建表,它无论如何都不可为空