首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >嵌套数组的Klaxon解析

嵌套数组的Klaxon解析
EN

Stack Overflow用户
提问于 2018-04-15 10:54:42
回答 1查看 1.9K关注 0票数 3

我试着用Klaxon来解析这个文件,总体上效果很好,但我完全没有成功地解析这个特性/Number/properties/的子数组。

所以我的想法是得到原始的属性串,然后用Klaxon分别解析它,尽管我在这方面也没有成功。除此之外,我还采取了许多其他方法。

到目前为止我的代码是:

代码语言:javascript
复制
  class Haltestelle(val type: String?, val totalFeatures: Int?, val features: Array<Any>?)

fun main(args: Array<String>) { // Main-Routine


    val haltejsonurl = URL("http://online-service.kvb-koeln.de/geoserver/OPENDATA/ows?service=WFS&version=1.0.0&request=GetFeature&typeName=ODENDATA%3Ahaltestellenbereiche&outputFormat=application/json")
    val haltestringurl = haltejsonurl.readText()


    val halteklx = Klaxon().parse<Haltestelle>(haltestringurl)


    println(halteklx?.type)
    println(halteklx?.totalFeatures)
    println(halteklx?.features)

    halteklx?.features!!.forEach {
        println(it) 
    }

我知道我正在调用任何一个数组的特性,所以每次输出都只是打印我的java.lang.Object@blabla。不过,也可以使用Array failes。

真的花了几个小时在这上面,你会怎么做?

对新手的问候

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-26 01:00:20

这是我在Kotlin做类似事情的方法。您可以将响应解析为Klaxon JsonObject,然后访问"features“元素,将所有数组对象解析为JsonArray of JsonObjects。在您的示例中,可以使用parseFromJsonObject进行迭代和强制转换:

代码语言:javascript
复制
import com.beust.klaxon.JsonArray
import com.beust.klaxon.JsonObject
import com.beust.klaxon.Parser
import com.github.aivancioglo.resttest.*

val response : Response = RestTest.get("http://anyurlwithJSONresponse")
val myParser = Parser()
val data : JsonObject = myParser.parse(response.getBody()) as JsonObject
val allFeatures : JsonArray<JsonObject>? = response["features"] as JsonArray<JsonObject>?

for((index,obj) in allFeatures.withIndex()) {
    println("Loop Iteration $index on each object")
    val yourObj = Klaxon().parseFromJsonObject<Haltestelle>(obj)
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49841123

复制
相关文章

相似问题

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