我正在使用slack api(https://slack.com/api/search.messages)来获取slack频道中的帖子,并使用java代码解析帖子。

以下是示例松弛响应,其中松弛帖子是“matches”和“matches-Previous”下的“text”:

    {
  "ok": true,
  "query": "\"@DTR:JQL\" in:#sydtest-reporting",
  "messages": {
    "total": 16,
    "matches": [
      {
        "iid": "370f1cc2-aef9-4681-93f1-fa3787ce9d17",
        "team": "T9180DGJH",
        "channel": {
          "id": "C9UPLJ9D2",
          "is_channel": true,
          "name": "sydtest-reporting",
          "teams": [
            "T9180DGJH"
          ]
        },
        "type": "message",
        "user": "W9G7PAUCF",
        "username": "200848",
        "ts": "1568962541.016200",
        "text": "@DTR:JQL#SYDEPS AND labels = Nov_2019_CSS_Cycle1",
        "previous": {
          "type": "message",
          "user": "WGGUL08NA",
          "username": "208977",
          "ts": "1568962184.015700",
          "text": "@DTR:2019 November Release",
          "iid": "4bdb76cf-015b-4b43-9608-013b56e47820",
        },

上面的响应被排序(“sort”,“timestamp”)。
我正在使用来自com.jayway.jsonpath.JsonPath库的read()来解析上面的json并使用以下2个jsonPathExpression:
$.messages.matches[*].text
$.messages.matches[*].previous.text

目前,我正在触发2个单独的JsonPath.read(document, jsonPathExpression)调用(上面每个jsonPathExpression调用一次),然后制作一个组合列表,如下所示:
@DTR:JQL#SYDEPS AND labels = Nov_2019_CSS_Cycle1
@DTR:2019 November Release
... many more

这种方法的问题是,尽管每个读取操作都返回排序后的列表,但是当我合并两个列表时,排序是没有意义的。

我在寻找的是对jsonPathExpression的单次读取操作。如果需要,我可以使用其他json库。请指导。

最佳答案

您可以使用以下表达式获得两个值:
$.messages.matches[*]..text

10-02 03:56