我有以下JSON:
{
"Response": "Success",
"Message": "Coin list succesfully returned!",
"BaseImageUrl": "https://www.cryptocompare.com",
"BaseLinkUrl": "https://www.cryptocompare.com",
"Data": {
"LTC": {
"Id": "3808",
"Url": "/coins/ltc/overview",
"ImageUrl": "/media/19782/ltc.png",
"Name": "LTC",
"CoinName": "Litecoin",
"FullName": "Litecoin (LTC)",
"Algorithm": "Scrypt",
"ProofType": "PoW",
"SortOrder": "2"
}
...
},
"Type": 100
}
为了让Moshi解析data
JSON对象,因为它是一个动态列表,我创建了一个类:
data class Data(@Json(name = "Data") val cryptoCoinMap: Map<String, CryptoCoin>)
问题是,我想使用CryptoCoin
适配器显示RecyclerView
列表,因此我只想显示List
,而不是Map
。
我一直试图在RxJava中提出一个解决方案,以便能够在CryptoCoin
模型中修改Data
val为List
而不是Map
但不幸的是我被卡住了。
有没有人对如何改进这个有更好的方法或想法?
这是我到目前为止所提出的:
var cryptoCoinList = mutableListOf<CryptoCoin>()
coinRepository
.getCoinList()
.concatMapIterable { t: CryptoCoinList -> t.data.cryptoCoinMap.toList() }
.map { t: Pair<String, CryptoCoin> -> cryptoCoinList.add(t.second) }
// INSERT TRANSFORMATION HERE
.observeOn(AndroidSchedulers.mainThread())
.subscribeBy(onNext = {
coinListData.postValue(it.second)
})
提前多多感谢!