如果对象类型不同,GSON 会抛出异常
GSON raises exception if object type is different
我正在使用以下方法将提要解析为 Java 个对象。
val gsonBuilder = GsonBuilder()
val gson = gsonBuilder.create()
var homeModel: DataModel?=null
try {
homeModel = gson.fromJson(response, DataModel::class.java)
}catch (ex:java.lang.Exception){
}
如果 feed 以相同的格式出现,这会很好地工作,但某些对象的类型会改变,它会进入异常块。
例如,feed some time 在“数据”中提供“整数”而不是对象
@SerializedName("data")
@Expose
private List<MoreData> data = null;
我想知道如果类型不匹配,GSON 中是否有可能将特定数据设置为“空”。
您需要使用 List<Object> 为 java 或 List< 更改“数据”的数据类型Any> kotlin。可能你会摆脱异常。
@SerializedName("data")
@Expose
private List<Object> data = null;
但您需要在使用时将项目转换为适当的类型。
例如:
val item:Int = homeModel[i] as Int //as yourDesiredType
但是,如果你想在数据类型不同的时候设置"data"为null,你可以尝试:
val model = DataModel()
val json = Gson().toJson(model)
homeModel = Gson().fromJson(json, DataModel::class.java)
try {
if(!homeModel.data.isNullOrEmpty()){
homeModel.data.first() as String //as yourDesiredType
}
}
catch (ex:java.lang.Exception){
homeModel.data = null
}
我正在使用以下方法将提要解析为 Java 个对象。
val gsonBuilder = GsonBuilder()
val gson = gsonBuilder.create()
var homeModel: DataModel?=null
try {
homeModel = gson.fromJson(response, DataModel::class.java)
}catch (ex:java.lang.Exception){
}
如果 feed 以相同的格式出现,这会很好地工作,但某些对象的类型会改变,它会进入异常块。
例如,feed some time 在“数据”中提供“整数”而不是对象
@SerializedName("data")
@Expose
private List<MoreData> data = null;
我想知道如果类型不匹配,GSON 中是否有可能将特定数据设置为“空”。
您需要使用 List<Object> 为 java 或 List< 更改“数据”的数据类型Any> kotlin。可能你会摆脱异常。
@SerializedName("data")
@Expose
private List<Object> data = null;
但您需要在使用时将项目转换为适当的类型。
例如:
val item:Int = homeModel[i] as Int //as yourDesiredType
但是,如果你想在数据类型不同的时候设置"data"为null,你可以尝试:
val model = DataModel()
val json = Gson().toJson(model)
homeModel = Gson().fromJson(json, DataModel::class.java)
try {
if(!homeModel.data.isNullOrEmpty()){
homeModel.data.first() as String //as yourDesiredType
}
}
catch (ex:java.lang.Exception){
homeModel.data = null
}