java - 使用 Kotlin 的 Moshi 1.8.0 将 HashMaps 列表从/到 JSON 的转换问题失败
问题描述
我看了很多例子,但没有帮助我解决我的问题,我有这个与 JSON 进行映射的模型:
data class SomeResponse (
...
@Json(name = "dictionary")
var dictionary: HashMap<String, ArrayList<String>>? = null )
我正在使用 Moshi 与 JSON 进行转换,当转换过程开始时会发生异常
平台 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
。
推荐阅读
- r - 为“hidden_dropout_ratios”超参数指定“makeNumericVectorParam”,这取决于隐藏层的数量
- c# - Unity 脚本未运行
- django - 有没有办法从 Kiwi TCMS 中的测试用例更新中覆盖通知电子邮件的内容?
- python - 如何将具有多个值的嵌套字典导出到excel中
- html - 仅 CSS 可滚动表体
- ruby - 类方法中的类方法`self.`在Ruby中阻止`class << self`
- scala - 如何将火花响应转换为 JSON 对象
- go - 在 go 项目中使用 cgo 包含 libsodium 失败
- c# - 如何修复 Element 在 C# 中无效
- google-maps - 谷歌地图自定义窗格/图层