假设我有一个JSON,您可以看到在“对象1”中有faq数组,但在“对象2”中没有,因此我会检查它是否为空,但在检查为空后,Kotlin仍运行条件体并将其值打印为空
[
{
"name": "Object 1",
"faq": [
{
"question": "A Question?",
"answer": "Answer"
}
],
...
},
{
"name": "Object 2",
...
},
]
我用这个代码来转换这个
class Converters {
@TypeConverter
fun faqListToJSON(value: List<FAQ>?): String = Gson().toJson(value)
@TypeConverter
fun jsonToFAQ(value: String?): List<FAQ> {
if(value != null) {
val faq = object : TypeToken<List<FAQ>>() {}.type
Log.e("Converter", "jsonToFAQ: $value")
return Gson().fromJson(value, faq)
}
return emptyList()
}
}
这是对象和FAQ对象模型类
data class Object(
...
var faq: List<FAQ>? = null
)
data class FAQ(val question: String, val answer: String)
并且给出这个错误日志,即使我已经首先检查了null
2021-02-02 00:04:13.565 24185-24447/com.burhankhanzada.android.pakistannetworksbundlesoffers.debug E/Converter: jsonToFAQ: null
Process: com.burhankhanzada.android.pakistannetworksbundlesoffers.debug, PID: 24185
java.lang.NullPointerException: Gson().fromJson(value, faq) must not be null
at com.burhankhanzada.android.pakistannetworksbundlesoffers.data.Converters.jsonToFAQ(Converters.kt:29)
at com.burhankhanzada.android.pakistannetworksbundlesoffers.data.othercodes.OtherCodeDao_Impl$3.call(OtherCodeDao_Impl.java:289)
at com.burhankhanzada.android.pakistannetworksbundlesoffers.data.othercodes.OtherCodeDao_Impl$3.call(OtherCodeDao_Impl.java:187)
3条答案
按热度按时间plicqrtu1#
你能试试这个吗?
bprjcwpo2#
对于此解决方案,我的解决方案是这样的,正如您在我的实体中所看到的,我已经声明了此字段可以为null
var faq: List<FAQ>? = null
,因此,请在TypeConverter
中检查null,只需将其直接转换为如下所示然后在使用此字段的任何位置选中null
siv3szwd3#
这对我很有效
}