使用 kotlin 的 Json 数据

标签 json kotlin moshi

我目前正在开发一个应用程序,我希望将 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
)

-- 具体配置.kt
data class SpecificConfig(
    setting: String,
)

我有两个主要问题:
  • 如何访问“特定”“A/B”数据并获取对象类SpecificConfig .我可以在我的generalConfig数据类直接从specific中提取一个字段并选择 AB通过传递参数
  • 是否可以避免创建多个数据类来获取我的最终类对象 config

  • 目的是拥有一个包含通用数据和特定数据的json。我需要构建一个最终数据类,它从公共(public)数据和特定数据之一合并。

    任何的想法 ?谢谢

    最佳答案

    试试这个
    1.修改你的

    data class SpecificConfig(
        setting: String,
    )
    


    data class SpecificConfig(
    @Json(val name = "A") val a : JsonObject,
        @Json(val name = "B") val b: JsonObject
    )
    

    第二:创建另外2个类,即
    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
    )
    

    关于使用 kotlin 的 Json 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52659607/

    相关文章:

    javascript - 如何从 JSON 映射数据并完全按照我的描述构建结果

    python - 如何解析json数据内容?

    android - 重复类 kotlin 类 kotlin 版本 1.3.70

    android - 非法状态异常 : RecyclerView is null inside of Fragment within NavigationDrawer activity

    android - Moshi:应为类、ParameterizedType 或 GenericArrayType,但 <null> 的类型为 null

    android - 使用带有 Retrofit 和 Kotlin 的 moshi 将 jsonarray 解析为对象

    javascript - jquery getJSON 调用出现问题

    arrays - 我如何在 map 上快速绘制标记

    javafx - 如何在 TornadoFX 中将 minHeight 和 minWidth 设置为窗口?

    for-loop - 如何在 Kotlin 中制作传统的 for 循环