3

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

以下是示例 slack 响应,其中 slack 帖子是 'matches' 下的 'text' 和 match - previous' :

    {
  "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",
        },

以上响应已排序(“排序”、“时间戳”)。我正在使用 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 库。请指导。

4

1 回答 1

3

您可以使用此表达式获取这两个值:

$.messages.matches[*]..text

于 2019-12-13T10:30:35.563 回答