我需要解析从服务器下载的非常大的 JSON 文件。这些 JSON 文件可以包含完全不同的键和值。这里有些例子...
{ "result": "PASS",
"items": [
{ "name": "John", "age": 33 },
{ "name": "Jane", "age": 23 } ]
}
{ "result": "PASS",
"items": [
{ "make": "Ford", "model": "Mustang", "colors": ["blue", "red", "silver"] },
{ "make": "Dodge", "model": "Charger", "colors": ["yellow", "black", "silver"] } ]
}
该items
数组可能包含数千个条目,每个项目中的数据最多可以包含 60 个键/值对。
这些只是两个示例,但我需要能够解析 30-40 种不同类型的 JSON 文件,而且我不能总是控制文件中的数据类型。因此,我无法创建自定义模型来将数据绑定到我的应用程序中的对象。
我想要做的是为数组JsonObject
中的每个项目创建一个并将其添加到我可以在应用程序中使用的一个。我目前正在使用 Klaxon Streaming API 来尝试完成此操作,但似乎可以找到一种无需绑定到自定义对象的方法。items
MutableList
JsonReader(StringReader(testJson)).use { reader ->
reader.beginObject {
var result: String? = null
while (reader.hasNext()) {
val name = reader.nextName()
when (name) {
"result" -> result = reader.nextString()
"items" -> {
reader.beginArray {
while (reader.hasNext()) {
// ???
}
}
}
}
}
}
}