gpt4 book ai didi

kotlin - 使用具有多个输入字段的 Moshi

转载 作者:行者123 更新时间:2023-12-02 12:43:43 25 4
gpt4 key购买 nike

我有一些看起来像这样的 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
)

一切正常。但是,我真的很想提取 currencyvalue参数放入单独的 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可以为对象提供两个不同的字段( currencyvalue ),它们来自与父帐户相同的级别。

我是否需要创建一个名为 MoshiAccount 的中间“解码”对象?然后使用自定义适配器将其转换为我的真实 Account目的?

我看到了 How to deseralize an int array into a custom class with Moshi?看起来很接近(除了在这种情况下,适配对象(VideoSize)只需要一个字段作为输入......在我的情况下,我需要 currencyvalue )

任何想法或建议将不胜感激。谢谢

最佳答案

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)

关于kotlin - 使用具有多个输入字段的 Moshi,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46480577/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com