每一个使用 Kotlin 的在进行服务端访问的时候,json 解析免不了要使用
Gson,今天偶尔发现了一个奇怪的 CreatTime 坑。在坑里待了 3 天,终于出坑了。
首先比较一下下面两段代码的差别
代码一:
for (i in 0..jsonObject.length() - 1){
val managerInfo = jsonObject.getJSONObject(i).toString()
val mmtemp = Gson().fromJson(managerInfo, ManagerPower::class.java)
try {
dataList.add(ManagerPower(mmtemp.Id, mmtemp.PowerCode, mmtemp.PowerName, mmtemp.PowerInfo, mmtemp.OrderNum, mmtemp.PowerGroupCode, mmtemp.CreateTime, mmtemp.Creator, mmtemp.UpdateTime, mmtemp.Updator))
Log.d("joel test --> ", mmtemp.CreateTime)
}catch (e : Exception){
Log.d("joel error --> ", "ManagerPowerEditActivity.kt line 98 \r\n"+e.toString() + "\r\n mmtemp.CreatTime is " + mmtemp +"\r\n" + managerInfo.toString())
}
}
代码二:
for (i in 0..jsonObject.length() - 1){
val managerInfo = jsonObject.getJSONObject(i).toString()
val mmtemp = Gson().fromJson(managerInfo, ManagerPower::class.java)
try {
dataList.add(ManagerPower(mmtemp.Id, mmtemp.PowerCode, mmtemp.PowerName, mmtemp.PowerInfo, mmtemp.OrderNum, mmtemp.PowerGroupCode, mmtemp.CreateTime, mmtemp.Creator, mmtemp.UpdateTime, mmtemp.Updator))
Log.d("joel test --> ", mmtemp.CreateTime)
}catch (e : Exception){
Log.d("joel error --> ", "ManagerPowerEditActivity.kt line 98 \r\n"+e.toString() + "\r\n mmtemp.CreateTime is " + mmtemp +"\r\n" + managerInfo.toString())
}
}
这两段代码的差别,只在 mmtemp.CreateTime 和 mmtemp.CreatTime 上,其他的一模一样。一个可以正常运行解析 json ,一个不可以运行。
mmtemp.CreatTime 字段的值在 fromJson 时会给出 null 值。