NumberFormatException,从JSON到TypeToken(Kotlin)

时间:2018-04-04 21:48:46

标签: android kotlin gson numberformatexception typetoken

我有一个如下所示的数据类:

data class MyData (val myNumber : String,
                   var myDate   : Date?) : Serializable

当我设置日期时,我使用格式化程序,如下所示:

val cal = Calendar.getInstance()
        cal.timeZone = TimeZone.getTimeZone("America/New_York")
        cal.set(year.toInt(), monthNumber, day.toInt())
        myDate = cal.time

我在SharedPreferences中存储了一个这样的数组,然后像这样加载它:

private fun GetMyDataArray(): ArrayList<MyData>? {
    val json = sharedPrefs!!.getString(STORED_DATA_KEY, "")
    val caseType = object : TypeToken<ArrayList<MyData>>() {}.type
    return Gson().fromJson<ArrayList<MyData>>(json, caseType)
}

99%的情况下,这种工作正常,但在一些用户的设备上它崩溃了:

java.lang.NumberFormatException Invalid number: Mar

Failed to parse date ["Mar 21, 2018 08:01:23']: Invalid number: Mar
com.google.gson.internal.bind.util.ISO8601Utils.parse 

为什么在某些设备上这种方法可以正常工作,而其他设备却没有?

可能是由于用户区域设置?如果是这样,我该如何解决? (我的大部分用户都在美国,但有些人在印度和欧洲)

任何指示赞赏,谢谢!

0 个答案:

没有答案