我是 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
根据这个问题(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");