如何迭代通过JsonObject的属性递归?

我将字符串解析为JSON对象,我需要能够递归地迭代对象的属性。 所以我试图创建一个函数迭代通过对象的属性,如果一个属性不是一个原语,然后再次调用该函数(递归)与属性本身。

在JavaScript中,我会解决这个问题:

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

但是我正在摆脱Javascript,并试图学习如何使用Kotlin。 所以我find了一个遍历JSON对象属性的方法 。

但我不太明白如何确定属性是否是一个原始的。

 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) { val someString = "(some json string)" val jsonObject = JSON.parse(someString) iterateThroughAttributes(jsonObject) } 

有人可以帮忙吗?

您可以使用is检查一个对象是否是某种types的is这与java中的instanceOf等价。

有关详细信息,请参阅此问题 。