我看了很多例子,但没有帮助我解决问题,我有一个用JSON映射的模型:
data class SomeResponse (
...
@Json(name = "dictionary")
var dictionary: HashMap<String, ArrayList<String>>? = null )
我使用Moshi进行JSON转换,当转换过程开始时,会发生异常
Platform java.util.HashMap>(不带注释(需要要注册的显式JsonAdapter
这是我的Moshi对象:
val customDateAdapter = object : Any() {
val dateFormat: DateFormat
init {
dateFormat = SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", Locale.ENGLISH)
dateFormat.setTimeZone(TimeZone.getTimeZone("GMT"))
}
@ToJson
@Synchronized
fun dateToJson(d: Date): String {
return dateFormat.format(d)
}
@FromJson
@Synchronized
fun dateToJson(s: String): Date {
try {
val date = dateFormat.parse(s)
Timber.d("DATE_FORMATTER Did format: $date")
return date
} catch (e: ParseException) {
try {
val df = SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss", Locale.ENGLISH)
df.timeZone = TimeZone.getTimeZone("GMT")
return df.parse(s)
} catch (e: ParseException) {
e.printStackTrace()
}
return Date()
}
}
private val stringArrayListAdapter = object : Any() {
@ToJson
@Synchronized
fun arrayListToJson(list: ArrayList<String>) : List<String> = list
@FromJson
@Synchronized
fun arrayListFromJson(list: List<String>) : ArrayList<String> = ArrayList(list)
}
val moshi: Moshi = Moshi.Builder()
.add(KotlinJsonAdapterFactory())
.add(customDateAdapter)
.add(stringArrayListAdapter)
.build()
如何解决问题
Moshi仅支持Map
。使用Map
或为HashMap
创建一个适配器。