Клаксон Разбор вложенных массивов

Я пытаюсь проанализировать этот файл с Klaxon, в целом все идет хорошо, за исключением того, что мне совершенно не удается разобрать этот массив элементов /[Number]/properties/

Поэтому я думаю получить исходную строку свойств и проанализировать ее отдельно с Клаксоном, хотя мне это тоже не удается. Помимо этого я выбрал много других подходов.

Мой код до сих пор:

  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 не удается.

На самом деле провести часы в этом, как бы вы пошли на это?

С уважением новичка

1 ответ

Вот как я сделал нечто подобное в Котлине. Вы можете проанализировать ответ как Klaxon JsonObject, а затем получить доступ к элементу "features", чтобы проанализировать все объекты массива в JsonArray из JsonObjects. Это может быть повторено и приведено с помощью parseFromJsonObject в вашем примере:

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)
}
Другие вопросы по тегам