JSON запрос String для получения значения с условием
Я хочу получить значение vehicleCode
элемент где vehicleLease
является AS PER LAW OF ENFORCMENT
,
Может ли кто-нибудь помочь мне с запросом JSON?
Пожалуйста, найдите данные JSON ниже.
{
"StateOffers": [
[{
"vehicleCode": 242214214,
"vehiclePart": [{
"@type": "vehiclePart",
"segments": [{
"@type": "Segment"
"segmentOfferInformation": {
"vehicleMiles": 771,
"awardFare": false
},
"vehicleLease": "AS PER LAW OF ENFORCMENT"
}
],
"stops": 0
}
]
}, {
"vehicleCode": 242214214,
"vehiclePart": [{
"@type": "vehiclePart",
"segments": [{
"@type": "Segment"
"segmentOfferInformation": {
"vehicleMiles": 771,
"awardFare": false
},
"vehicleLease": "MY RULE MY WORLD"
}
],
"stops": 0
}
]
}
]
]
}
Это выражение, которое я пробовал:
$..vehicleCode[?($..vehicleLease=="AS PER LAW OF ENFORCMENT")
1 ответ
Библиотека JSON Josson может решить этот вопрос с помощью выражения языка запросов.
https://github.com/octomix/josson
Десериализация
Josson josson = Josson.fromJsonString(
"{" +
" \"StateOffers\" : [ [ {" +
" \"vehicleCode\" : 242214214," +
" \"vehiclePart\" : [ {" +
" \"@type\" : \"vehiclePart\"," +
" \"segments\" : [ {" +
" \"@type\" : \"Segment\"," +
" \"segmentOfferInformation\" : {" +
" \"vehicleMiles\" : 771," +
" \"awardFare\" : false" +
" }," +
" \"vehicleLease\" : \"AS PER LAW OF ENFORCMENT\"" +
" } ]," +
" \"stops\" : 0" +
" } ]" +
" }, {" +
" \"vehicleCode\" : 242214215," +
" \"vehiclePart\" : [ {" +
" \"@type\" : \"vehiclePart\"," +
" \"segments\" : [ {" +
" \"@type\" : \"Segment\"," +
" \"segmentOfferInformation\" : {" +
" \"vehicleMiles\" : 771," +
" \"awardFare\" : false" +
" }," +
" \"vehicleLease\" : \"MY RULE MY WORLD\"" +
" } ]," +
" \"stops\" : 0" +
" } ]" +
" } ] ]" +
"}");
Запрос
Integer vehicleCode= josson.getInteger(
"StateOffers.flatten()" +
".[vehiclePart.segments[vehicleLease = 'AS PER LAW OF ENFORCMENT']]" +
".vehicleCode");
System.out.println(vehicleCode);
//Output: 242214214