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
Другие вопросы по тегам