[
{
"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
元素。在这里,如果预订次数发生多次,如何找到预订次数?此处ReserveNumber
RN001
出现两次。如何使用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}
]