我目前正在开发一个应用程序,我想对一个类进行JSON提取,但是仅匹配字段会有些困难。我正在使用Moshi进行JSON管理。
下面是我拥有的JSON:
{
"common" :{
"source_url": "xxxx",
"target_url": "yyy
},
"specific":{
"A":{
"setting": "ccc",
},
"B":{
"setting": "ddd",
}
}
}
对我来说,目标是基于如下所示的数据类获取对象:
data class config(
val sourceUrl: String,
val targetUrl: String,
val setting: String
)
我开始的工作是首先创建不同的数据类,以使我能够在获得上述类对象之前操纵数据。
-GeneralConfig.kt
data class GeneralConfig(
val common: CommonConfig,
val specific: Specific
)
-CommonConfig.kt
data class CommonConfig(
@Json(val name = "source_url") sourceUrl: String,
@Json(val name = "target_url") val targetUrl: String
)
-SpecificConfig.kt
data class SpecificConfig(
setting: String,
)
我有2个主要问题:
如何访问“特定”“ A / B”数据并获得对象类SpecificConfig
。我可以在我的generalConfig
数据类中直接从specific
提取一个字段并通过传递参数来选择A
或B
是否可以避免创建多个数据类来获取我的最终类对象config
目的是使json包含公共数据和特定数据。我需要构建一个最终数据类,该类将通用数据和特定数据之一合并。
有什么主意吗?谢谢
答案 0 :(得分:0)
尝试一下 1.修改
data class SpecificConfig(
setting: String,
)
收件人
data class SpecificConfig(
@Json(val name = "A") val a : JsonObject,
@Json(val name = "B") val b: JsonObject
)
第二:创建另外两个类,即
data class AConfig(
setting: String,
)
data class BConfig(
setting: String,
)
第三:修改
data class config(
val sourceUrl: String,
val targetUrl: String,
val setting: String
)
收件人
data class config(
val sourceUrl: String,
val targetUrl: String,
val setting: String,
val a: JsonObject,
val b: JsonObject
)
答案 1 :(得分:0)
我希望为每个请求创建类,而不是手动对其进行解析
data class GeneralConfig(
@SerializedName("common") val common: CommonConfig,
@SerializedName("specific") val specific: Specific
)
data class CommonConfig(
@SerializedName("source_url") val sourceUrl: String,
@SerializedName("target_url") val targetUrl: String
)
data class Specific(
@SerializedName("A") val a: SpecificSettings,
@SerializedName("B") val b: SpecificSettings
)
data class SpecificSettings(
@SerializedName("setting") val setting: String
)