NumberFormatException, от JSON до 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 

Почему на некоторых устройствах это работает нормально, а на других - нет?

Может быть, это из-за настроек локали пользователя? и если да, то как мне это исправить? (большинство моих пользователей находятся в США, но некоторые находятся в Индии и Европе)

Любые указатели приветствуются, спасибо!

похоже, у вашей даты неправильный формат. См. stackoverflow.com/questions/6873020/gson-date-format о настройке конкретного формата для использования Gson (это java, но идея та же)

njzk2 05.04.2018 04:31

Спасибо! Я смог это исправить :)

FlatDog 07.04.2018 22:28
0
2
232
0

Другие вопросы по теме