无法从数组中找到json路径

问题描述 投票:0回答:1

我是 JSON 新手。我有一个 LossHistory Json,我需要从中过滤出等于“General Liab - Excess”的“LineOfBusinessCode”,我需要显示特定的“Lossyear” 我的 JSON 数据

{"LossHistory": {
  "LossDetails": [
    {
      "LineOfBusinessCode": "General Liab - Excess",
      "Lossyear": 2018,
      "NumberOfTotalClaims": 8,
      "PaidLosses": 500,
      "PaidExpense": 80000,
      "Outstandingreserve": 800,
      "TotalIncurred": 800,
      "valuationDate": "2023-12-06T00:00:00",
      "LargeClaim": 700,
      "NumberOfOpenClaims": 6,
      "carrierName": "Hrst",
      "ClaimSource": "Manual"
    },
    {
      "LineOfBusinessCode": "General Liab - Excess",
      "Lossyear": 2019,
      "NumberOfTotalClaims": 8,
      "PaidLosses": 500,
      "PaidExpense": 80000,
      "Outstandingreserve": 800,
      "TotalIncurred": 800,
      "valuationDate": "2023-12-06T00:00:00",
      "LargeClaim": 700,
      "NumberOfOpenClaims": 6,
      "carrierName": "Hrst",
      "ClaimSource": "Manual"
    },
    {
      "LineOfBusinessCode": "Auto",
      "Lossyear": 2018,
      "NumberOfTotalClaims": 8,
      "PaidLosses": 500,
      "PaidExpense": 80000,
      "Outstandingreserve": 800,
      "TotalIncurred": 800,
      "valuationDate": "2023-12-06T00:00:00",
      "LargeClaim": 700,
      "NumberOfOpenClaims": 6,
      "carrierName": "Hrst",
      "ClaimSource": "Manual"
    }
  ]
}}

我的路

$..LossDetails[?(@.LineOfBusinessCode == 'General Liab - Excess')].Lossyear

现在我的结果是

[
   2018,
   2019
]

我现在的情况符合预期,我需要 2018 年或 2019 年其中任何一个。我们可以使用索引或任何其他方式,但我们需要满足此条件 LineOfBusinessCode 等于“General Liab - Excess”,然后是 lossyear 预期产出

2018
json jsonpath json-path-expression
1个回答
1
投票

根据这个问题(https://github.com/json-path/JsonPath/issues/272),仅仅使用

JsonPath
来用一行语法来实现它是不可能的。但你可以直接得到结果,然后
get(0)
就可以轻松得到,例如:

String filterResult = JsonPath.read(fullJson, "$..LossDetails[?(@.LineOfBusinessCode == 'General Liab - Excess')]").toJSONString();
int lossYear = JsonPath.read(filterResult, "$[0].Lossyear");
© www.soinside.com 2019 - 2024. All rights reserved.