Я пытаюсь проанализировать имена «столбцов» и «ограниченных» (столбец и ограниченные списки будут содержать только 1 элемент) из ответа Solr, который выглядит следующим образом:
val objectString = """{
"responseHeader":{
"status":0,
"QTime":5,
"params":{
"q":"column:card_num,first_name,last_name"}},
"response":{"numFound":2,"start":0,"docs":[
{
"column":["card_num"],
"restricted":["y"],
"id":"ca5f4t768-4z61-987a-aeg6-zxxasdxerdf",
"_version_":1632804569464438784},
{
"column":["first_name"],
"restricted":["n"],
"id":"ca5f4t768-4z61-987a-aeg6-zxfegq9ae0",
"_version_":1632804569464438784}]
}}"""
theответы могут содержать любое количество результатов в «документах».Из этого ответа я хотел бы разобрать "card_num", "Y", "first_name", "N".
Я использую библиотеку klaxon.
val pathMatcher = object : PathMatcher {
override fun pathMatches(path: String) = Pattern.matches(".*response.*docs.*id.*", path)
override fun onMatch(path: String, value: Any) {
println("Adding $path = $value")
}
}
Klaxon().pathMatcher(pathMatcher).parseJsonObject(StringReader(objectString))
Это работает для идентификаторов, так как идентификатор является строкой, но вы не можете использовать это в списке.