我正在尝试从Solr的响应中解析“列”和“受限”名称(列和受限列表将只包含1个元素):
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}]
}}"""
响应可以在“ docs”中包含任意数量的结果。从这个响应中,我想解析出“ 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))
这适用于ID,因为ID是一个字符串,但是您不能在列表上使用它。