如何迭代通过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
等价。
有关详细信息,请参阅此问题 。
- 我怎样才能使用Parse LiveQuery的Android自动添加新的对象到我的RecyclerAdapter?
- 使用Kotlin中的动态字段解析json对象
- 使用Fuel和Result将字节数组转换为Json
- 改造 – 分析意外的数据types
- 当我使用Android Studio 3.0时如何存储json数据?
- 从Spark + Kotlin的POST正文获取JSON数据
- 如何配置使用klaxon库的spring引导
- Gson反序列化JSON。 java.lang.RuntimeException:无法调用具有根本原因的public com.derp.procedure.model.SkeletonElement(),无参数)
- 如何用JSON API支架列表制作KOTLIN列表