【发布时间】:2019-09-23 07:21:22
【问题描述】:
我有一个 API REST 调用的 JSON 响应,我不太确定应该如何反序列化...
{
.....
"date": "10-10-19",
"rates": {
"GBP" : 101.01,
"EUR" : 102.01,
"AUD" : 103.4,
......
}
}
我想知道如何反序列化“rates”对象?我认为这是一个 Map 对象,所以使用 Gson 我制作了下一个 POJO:
class POJO(
private val base: String,
private val date: Date,
private val rates: Rate
)
我的 Rate 等级是
class Rate ( private val currency : Map <String, Double> )
除非我尝试在课堂上使用此地图,否则不会有任何问题。例如,当我尝试访问此变量时:
view?.converterBinder!!.setCurrencyList(it.data!!.rates.currency)
currency 为空,因为我认为 Gson 不知道如何解决它。我不知道我是否必须手动反序列化它或者使用 Gson 有任何解决方案。
有什么想法吗??
【问题讨论】:
-
响应本身不合适。它是有效的,但结构非常糟糕。为了便于解析,它应该是一个货币数组,而不是一个对象。您可以创建自己的自定义反序列化器,它将遍历
rates的键并存储值。 -
我知道@VladyslavMatviienko 这是一个非常奇怪的响应,但我无法修改它:( 所以我想我需要像你说的那样手动反序列化。
-
我仅次于@VladyslavMatviienko 评论,您的 JSON 在语法上是正确的,但在概念上是错误的。但尽管您可以使用以下方式向 Map 添加自定义:baeldung.com/gson-json-to-map
标签: android json kotlin serialization gson