使用多输入字段Moshi
我有一些像这样的JSON:
{ "name" : "Credit Card", "code" : "AUD", "value" : 1000 }
我正在使用Moshi把这个数据结构分解成如下的数据结构:
data class Account( @Json(name = "name") val name: String, @Json(name = "currency") val currency: String, @Json(name = "value") val value: Int )
一切运作良好。 但是,我真的想提取currency
和value
参数到一个单独的Money
对象。 所以我的模型看起来更像:
data class Money( @Json(name = "currency") val currency: String, @Json(name = "value") val value: Int ) data class Account( @Json(name = "name") val name: String, @Json(name = "???") val money: Money )
我正在努力的挑战是如何注释事物,以便Money
对象可以被给予两个不同的领域( currency
和value
)来自同一级别的父帐户。
我是否需要创建一个称为“ MoshiAccount
”的中间“解组”对象,然后使用自定义适配器将其转换为真实的Account
对象?
我看到了如何使用Moshi将int数组去除一个自定义的类? 看起来很接近(除了在这种情况下,适应对象(VideoSize)只需要一个字段作为输入…在我的情况下,我需要currency
和value
)
任何想法或建议将不胜感激。 谢谢
Moshi的适配器可以为您创建JSON结构。
object ADAPTER { private class FlatAccount( val name: String, val currency: String, val value: Int ) @FromJson private fun fromJson(json: FlatAccount): Account { return Account(json.name, Money(json.currency, json.value)) } @ToJson private fun toJson(account: Account): FlatAccount { return FlatAccount(account.name, account.money.currency, account.money.value) } }
不要忘记将适配器添加到您的Moshi实例。
val moshi = Moshi.Builder().add(Account.ADAPTER).add(KotlinJsonAdapterFactory()).build() val adapter = moshi.adapter(Account::class.java)