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

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

考虑下面的代码片段-

  1. {
  2. "header": {
  3. "systemId": "1"
  4. },
  5. "body": {
  6. "approvalType": "S",
  7. "requester": "CRM",
  8. "approver": "V",
  9. "additionalInfoList": [
  10. {
  11. "additionalInfoItem": {
  12. "value": [
  13. {
  14. "secret": [
  15. {
  16. "question": "1"
  17. }
  18. ]
  19. },
  20. {
  21. "secret": [
  22. {
  23. "question": "2"
  24. }
  25. ]
  26. },
  27. {
  28. "secret": [
  29. {
  30. "question": "3"
  31. }
  32. ]
  33. }
  34. ]
  35. }
  36. },
  37. {
  38. "additionalInfoItem": {
  39. "name": "key2",
  40. "value": [
  41. {
  42. "secret": [
  43. {
  44. "question": "00"
  45. }
  46. ]
  47. },
  48. {
  49. "secret": [
  50. {
  51. "question": "002"
  52. }
  53. ]
  54. },
  55. {
  56. "secret": [
  57. {
  58. "question": "003"
  59. }
  60. ]
  61. }
  62. ]
  63. }
  64. }
  65. ]
  66. }
  67. }

对于此json路径

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

api提供

  1. [
  2. "1",
  3. "2",
  4. "3",
  5. "00",
  6. "002",
  7. "003"
  8. ]

我正在使用配置 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#

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

相关问题