首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Klaxon解析动态键映射

用Klaxon解析动态键映射
EN

Stack Overflow用户
提问于 2019-06-18 14:35:11
回答 1查看 946关注 0票数 2

我有以下JSON片段:

代码语言:javascript
复制
 {  
   "hd":{  
      "hdEnabled":true,
      "defaultStreamQualitySetting":"HD720",
      "streamQualitySettings":{  
         "SD":"SD - low quality",
         "HD720":"Standard HD - 720p",
         "HD1080":"Full HD - 1080p"
      }
   }
}

我想用Klaxon和Gson将streamQualitySettings解析为一个名为“options”的对象,该对象有一个键和描述,所以我以一个包含3个选项的列表结束

  • 选项(key= SD,description = "SD -低质量“)
  • 选项(key= HD720,description =“StandardHD-720 p”)
  • 选项(key= HD1080,description = "Full HD-1080p“)

我怎样才能用Klaxon (或Gson)实现这一点?

这是我的密码

代码语言:javascript
复制
val jsonArray = bootstrapJsonObject()
          .lookup<JsonArray<JsonObject>>("hd.streamQualitySettings")
          .first()

val gson = Gson()
val options = ArrayList<Option>()
jsonArray.forEach {
    options.add(gson.fromJson(it.toJsonString(), Option::class.java))
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-18 16:27:39

你为什么同时使用gson和klaxon?如果您想使用gson,那么kotson是一个具有流利kotlin dsl的替代方案。

以下是克拉克森的解决方案:

代码语言:javascript
复制
fun convert(input: String): List<Option> {
    val streamObj = (Parser.default().parse(StringBuilder(input)) as JsonObject)
        .obj("hd")!!
        .obj("streamQualitySettings")!!
    return streamObj.keys.map { Option(it, streamObj.string(it)!!) }
}

解析,然后向下移动到streamQualitySettings

获取所有的密钥并将它们映射到Option

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56651552

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档