/ / Jak powtórzyć rekurencyjnie atrybuty obiektu JsonObject? - json, rekursja, odbicie, kotlin

Jak powtarzać rekurencyjnie atrybuty obiektu JsonObject? - json, rekursja, odbicie, kotlin

Parsuję ciągi znaków w obiekty JSON i potrzebujęaby móc rekursywnie przeglądać atrybuty obiektów. Tak więc próbuję utworzyć funkcję, która iteruje poprzez atrybuty obiektu, a jeśli atrybut nie jest prymitywny, wówczas wywołaj ponownie funkcję (rekursję) z samym atrybutem.

W Javascript I d byłoby rozwiązać tak:

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);

Ale odchodzę od Javascript i próbuję nauczyć się używać Kotlin, więc znalazłem sposób na iterację atrybutów obiektu JSON.

Ale nie bardzo rozumiem, jak ustalić, czy atrybut jest prymitywny, czy nie.

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)
}

Czy ktoś może pomóc?

Odpowiedzi:

0 dla odpowiedzi № 1

Możesz sprawdzić, czy obiekt używa jakiegoś typu is który jest odpowiednikiem instanceOf w języku Java.

Aby uzyskać szczegółowe informacje, zapoznaj się to pytanie.