¿Cómo iterar a través de los attributes de un JsonObject recursivamente?

Estoy parsing cadenas en objects JSON, y necesito poder iterar recursivamente a través de los attributes de los objects. Así que estoy tratando de crear una function que itere a través de los attributes del object, y si un atributo no es primitivo, llame de nuevo a la function (recursion) con el atributo mismo.

En Javascript lo resolvería así:

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

Pero me estoy alejando de Javascript, y tratando de aprender a usar Kotlin en su lugar. Entonces encontré una forma de iterar a través de los attributes de un object JSON .

Pero no entiendo muy bien cómo determinar si el atributo es primitivo o no.

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

¿Alguien puede ayudar?

Puede verificar si un object es de algún tipo usando is que es equivalente a instanceOf en java.

Para detalles, remita esta pregunta .