如何在Kotlin中检查JsonArray的JSON对象中JSON元素的出现次数


[
{
"ReserveNumber": "RN001",
"RecordType": "Bsdfs",
"RequireType": "BBsdfdsdf"
}, {
"ReserveNumber": "RN002",
"RecordType": "Breer",
"RequireType": "BBertert"
}, {
"ReserveNumber": "RN001",
"RecordType": "Brete",
"RequireType": "BBdvdv"
}, {
"ReserveNumber": "RN003",
"RecordType": "Berretert",
"RequireType": "BBxcvvd"
}
]

在上面的JSON数组中,每个JSON对象都包含ReserveNumber元素。在这里,如果预订次数发生多次,如何找到预订次数?此处ReserveNumberRN001出现两次。如何使用Kotlin的GSON库找到它?

您可以通过以下几种方式来实现。但最简单的是使用GSON本身的

  • 1-构建一个表示JSON对象的类

  • 2-构建地图<字符串,Int>表示ReserveNumber和计数

  • 3-遍历对象并添加到计数

我不做Kotlin,但在Kotlin中似乎很容易(甚至比使用Java 8 Streams API更简单(:

fun group(input: JsonArray): JsonArray {
return input.map { it.getAsJsonObject().getAsJsonPrimitive("ReserveNumber").asString }
.groupingBy { it }
.eachCount()
.entries
.fold(JsonArray(), { jsonArray, e ->
val el = JsonObject()
el.addProperty("key", e.key)
el.addProperty("count", e.value)
jsonArray.add(el)
jsonArray
})
}

上面的函数不是通用的,如果需要的话可以改进,但现在对于您的JSON文档,它可以生成以下JSON数组(类似于您所提到的:如何在第一个注释中用javascript获取JSON数组中的重复对象,但使用另一个输出JSON对象属性名称(:

[
{"key": "RN001", "count": 2},
{"key": "RN002", "count": 1},
{"key": "RN003", "count": 1}
]

最新更新