【问题标题】:How to parse JSON structure to get the string for the last element in groovy script如何解析 JSON 结构以获取 groovy 脚本中最后一个元素的字符串
【发布时间】:2023-01-07 03:07:51
【问题描述】:

我正在尝试在 groovy 脚本中解析以下 JSON,以读取 JSON 消息末尾下方参数元素的最后一个值

我试过了:def error = payload.childInstances.parameter 但它返回一个空值。

我期待它返回参数的最后一个实例 “com.sap.esb.oauth.token.access.TokenAccessException:找不到 OAuth2 授权代码凭据 \u0027OAUTH_MSOFFICE65_CRED\u0027”

Payload looks like this
{
   "message":{
      "subsystemName":"CONTENT",
      "subsytemPartName":"CONTENT_DEPLOY",
      "messageId":"ComponentMonitorErrors",
      "messageText":"Error messages reported by component monitors"
   },
   "childInstances":[
      {
         "message":{
            "subsystemName":"CAMEL",
            "subsytemPartName":"IFLOW",
            "messageId":"ERROR",
            "messageText":"Integration flow failed."
         },
         "childInstances":[
            {
               "message":{
                  "subsystemName":"CAMEL",
                  "subsytemPartName":"IFLOW",
                  "messageId":"EXCEPTION",
                  "messageText":"{0}"
               },
               "parameter":[
                  "org.osgi.service.blueprint.container.ComponentDefinitionException: Error when instantiating bean MessageFlow_62_configurator of class null"
               ],
               "childInstances":[
                  {
                     "message":{
                        "subsystemName":"CAMEL",
                        "subsytemPartName":"IFLOW",
                        "messageId":"CAUSE",
                        "messageText":"Cause: {0}"
                     },
                     "parameter":[
                        "com.sap.esb.oauth.token.access.TokenAccessException: Problem during reading the OAuth2 Authorization Code Credential OAUTH_MSOFFICE65_CRED from the cache: com.sap.esb.oauth.token.access.TokenAccessException: OAuth2 Authorization Code Credential \u0027OAUTH_MSOFFICE65_CRED\u0027 not found"
                     ],
                     "childInstances":[
                        {
                           "message":{
                              "subsystemName":"CAMEL",
                              "subsytemPartName":"IFLOW",
                              "messageId":"CAUSE",
                              "messageText":"Cause: {0}"
                           },
                           "parameter":[
                              "com.google.common.util.concurrent.UncheckedExecutionException: com.sap.esb.oauth.token.access.TokenAccessException: OAuth2 Authorization Code Credential \u0027OAUTH_MSOFFICE65_CRED\u0027 not found"
                           ],
                           "childInstances":[
                              {
                                 "message":{
                                    "subsystemName":"CAMEL",
                                    "subsytemPartName":"IFLOW",
                                    "messageId":"CAUSE",
                                    "messageText":"Cause: {0}"
                                 },
                                 "parameter":[
                                    "com.sap.esb.oauth.token.access.TokenAccessException: OAuth2 Authorization Code Credential \u0027OAUTH_MSOFFICE65_CRED\u0027 not found"
                                 ]
                              }
                           ]
                        }
                     ]
                  }
               ]
            }
         ]
      }
   ]
}
 

【问题讨论】:

    标签: arrays json groovy


    【解决方案1】:

    你有递归结构

    代码可能是这样的:

    def c = payload.childInstances
    //find last nested child instance
    while( c[-1].childInstances ) c = c[-1].childInstances
    def p = c[-1].parameter
    

    【讨论】:

      猜你喜欢
      • 2018-03-17
      • 1970-01-01
      • 2016-01-08
      • 1970-01-01
      • 2018-12-26
      • 2016-09-20
      • 1970-01-01
      • 1970-01-01
      • 2016-04-25
      相关资源
      最近更新 更多