我有以下JSON片段:
{
"hd":{
"hdEnabled":true,
"defaultStreamQualitySetting":"HD720",
"streamQualitySettings":{
"SD":"SD - low quality",
"HD720":"Standard HD - 720p",
"HD1080":"Full HD - 1080p"
}
}
}我想用Klaxon和Gson将streamQualitySettings解析为一个名为“options”的对象,该对象有一个键和描述,所以我以一个包含3个选项的列表结束
我怎样才能用Klaxon (或Gson)实现这一点?
这是我的密码
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))
}发布于 2019-06-18 16:27:39
你为什么同时使用gson和klaxon?如果您想使用gson,那么kotson是一个具有流利kotlin dsl的替代方案。
以下是克拉克森的解决方案:
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。
https://stackoverflow.com/questions/56651552
复制相似问题