Я пытаюсь получить несколько элементов из приведенного ниже JSON за один проход.Я хочу получить каждый originatorId и сообщение для каждого экземпляра «sequence» в упорядоченном формате, чтобы я мог отобразить их в виде переработчика, как история сообщений.
До сих пор я уже пытался использовать сопоставление с образцом через Klaxon, но не могу заставить его выбрать более одного экземпляра «message».Я думаю, что моя проблема в том, чтобы найти способ получить каждый экземпляр объекта «изменение» вместо только первого, например: =
"$.body.changes.event.message" -> does not work
"$.body.changes[0].event.message" -> returns only first message
{
"kind": "notification",
"body":
{
"changes": [
{
"sequence": 0,
"originatorId": "d5305f84f7812530e746a713ebeabb457e59b380b779387de90ff0f7ff593e2a",
"originatorMetadata":
{
"id": "d5305f84f7812530e746a713ebeabb457e59b380b779387de90ff0f7ff593e2a",
"role": "CONSUMER"
},
"serverTimestamp": 1555330963355,
"event":
{
"type": "ContentEvent",
"message": "hello ",
"contentType": "text/plain"
},
"dialogId": "8e35bc87-c42f-4a28-837d-ac6d93cb119a"
},
{
"sequence": 2,
"originatorId": "73c29cd1-b3e3-56fc-a483-ba3409831d21",
"originatorMetadata":
{
"id": "73c29cd1-b3e3-56fc-a483-ba3409831d21",
"role": "ASSIGNED_AGENT"
},
"serverTimestamp": 1555330964870,
"event":
{
"type": "ContentEvent",
"message": "Hi Bob, how can I help you today? ?",
"contentType": "text/plain"
},
"dialogId": "8e35bc87-c42f-4a28-837d-ac6d93cb119a"
},
{
"sequence": 3,
"originatorId": "d5305f84f7812530e746a713ebeabb457e59b380b779387de90ff0f7ff593e2a",
"originatorMetadata":
{
"id": "d5305f84f7812530e746a713ebeabb457e59b380b779387de90ff0f7ff593e2a",
"role": "CONSUMER"
},
"serverTimestamp": 1555330975711,
"event":
{
"type": "ContentEvent",
"message": "hi",
"contentType": "text/plain"
},
"dialogId": "8e35bc87-c42f-4a28-837d-ac6d93cb119a"
}
Мои ожидаемые результаты будут в виде карты с originatorId длясообщение с позицией сопоставления, связанной с последовательностью.На данный момент я могу получить только первое сообщение "привет" и последний originatorId, связанный вместе.Дальнейшая работа будет включать в себя включение serverTimestamp в то же отображение.Я открыт для использования разных библиотек для Клаксона.
Это код, который я уже пытался использовать =
val pathMatcher = object : PathMatcher {
override fun pathMatches(path: String) = Pattern.matches(".*.message", path)
override fun onMatch(path: String, value: Any) {
val origin = parseForOriginatorId(text)
val messageNew = Message(origin, timeReadNew, value.toString())
ChatActivity.adapter.addMessage(Message(origin, timeReadNew, value.toString()))
//messages[origin] = messageNew
Log.d("D", "Message: ${messageNew.originator}: ${messageNew.content}")
when (path) {
"$.body.changes.originatorId" -> Log.d("D", "======originator ID $value" )
"$.body.changes.event.message" -> Log.d("D", "=====Message $value")
}
}
}
Klaxon().pathMatcher(pathMatcher)
.parseJsonObject(StringReader(text))
}