java—即使抛出异常“com.jayway.jsonpath.pathnotfoundexception”,如何在json中收集标记的所有其他值?

klh5stk1  于 2021-07-03  发布在  Java
关注(0)|答案(1)|浏览(580)

考虑下面的代码片段-

{
    "header": {
        "systemId": "1"
    },
    "body": {
        "approvalType": "S",
        "requester": "CRM",
        "approver": "V",
        "additionalInfoList": [
            {
                "additionalInfoItem": {
                    "value": [
                        {
                            "secret": [
                                {
                                    "question": "1"
                                }
                            ]
                        },
                        {
                            "secret": [
                                {
                                    "question": "2"
                                }
                            ]
                        },
                        {
                            "secret": [
                                {
                                    "question": "3"
                                }
                            ]
                        }
                    ]
                }
            },
            {
                "additionalInfoItem": {
                    "name": "key2",
                    "value": [
                        {
                            "secret": [
                                {
                                    "question": "00"
                                }
                            ]
                        },
                        {
                            "secret": [
                                {
                                    "question": "002"
                                }
                            ]
                        },
                        {
                            "secret": [
                                {
                                    "question": "003"
                                }
                            ]
                        }
                    ]
                }
            }
        ]
    }
}

对于此json路径

$.body.additionalInfoList[*].additionalInfoItem.value[*].secret[*].question

api提供

[
   "1",
   "2",
   "3",
   "00",
   "002",
   "003"
]

我正在使用配置 REQUIRE_PROPERTIES 选项,该选项将jsonpath配置为在计算不确定路径时需要在路径中定义的属性。
如果在上述json中,某个问题未在请求中发送,则会引发如下异常- No results for path: $['body']['additionalInfoList'][1]['additionalInfoItem']['value'][0]['secret'][0]['question'] 我需要收集问号的所有其他值,即使异常 com.jayway.jsonpath.PathNotFoundException 被扔了。我怎样才能做到这一点?
另一方面,如果我使用 SUPPRESS_EXCEPTIONS ,如何知道是否有丢失的路径?

dgsult0t

dgsult0t1#

我在这里没有一个很好的答案;不过,为了完成这项工作,我建议将响应处理两次:
一旦出现异常(或者根本没有任何选项也可以工作),
然后使用属性来检测错误。
这应该允许您按照所描述的方式处理场景。

相关问题