/ / Wie man rekursiv durch Attribute eines JsonObject iteriert? - Json, Rekursion, Reflexion, Kotlin

Wie man rekursiv durch Attribute eines JsonObject iteriert? - Json, Rekursion, Reflexion, Kotlin

Ich analysiere Strings in JSON-Objekte, und ich braucherekursiv durch die Attribute der Objekte iterieren zu können. Also versuche ich eine Funktion zu erstellen, die durch die Attribute des Objekts iteriert, und wenn ein Attribut kein Primitiv ist, dann rufe die Funktion erneut (Rekursion) mit dem Attribut selbst auf.

In Javascript würde ich es so lösen:

function forEachAttribute(object) {
for (let key in object) {
let attribute = object[key];
if (typeof attribute === "object") {
forEachAttribute(attribute);
} else {
console.log(key + ": " + attribute);
}
}
}

let myObject = {
innerObject: {
x: 123
},
y: 456
};

forEachAttribute(myObject);

Aber ich entferne mich von Javascript und versuche zu lernen, wie man stattdessen Kotlin benutzt. Also habe ich gefunden eine Möglichkeit, die Attribute eines JSON-Objekts zu durchlaufen.

Aber ich verstehe nicht ganz, wie man bestimmt, ob das Attribut ein Primitiv ist oder nicht.

import kotlin.js.Json

fun iterateThroughAttributes(jsonObject: Json) {
for (key in js("Object").keys(jsonObject)) {
val attribute = jsonObject[key]
// How do I determine if the attribute is a primitive, or not?
}
}

fun main (args: Array<String>) {
val someString = "(some json string)"
val jsonObject = JSON.parse<Json>(someString)
iterateThroughAttributes(jsonObject)
}

Kann jemand helfen?

Antworten:

0 für die Antwort № 1

Sie können prüfen, ob ein Objekt von einem Typ ist is das ist äquivalent von instanceOf in Java.

Für Details, siehe diese Frage.