Получение массива в виде списка из вложенного объекта JSON через Spring restTemplate - PullRequest
0 голосов
/ 22 мая 2019

У меня есть JSON, полученный как ответ REST HTTPGET.Это ответ, созданный API Here Map:

{
"response": {
    "metaInfo": {
        "timestamp": "2019-05-22T15:56:28Z",
        "mapVersion": "8.30.96.157",
        "moduleVersion": "7.2.201920-3525",
        "interfaceVersion": "2.6.56",
        "availableMapVersion": [
            "8.30.96.157"
        ]
    },
    "route": [
        {
            "waypoint": [

            ],
            "mode": {
                "type": "fastest",
                "transportModes": [
                    "car"
                ],
                "trafficMode": "disabled",
                "feature": []
            },
            "leg": [
                {
                    "start": {x
                    },
                    "end": {y
                    },
                    "length": 43301,
                    "travelTime": 2191,
                    "maneuver": [
                        {
                            "position": {
                                "latitude": ,
                                "longitude": 
                            },
                            "instruction": "bla",
                            "travelTime": 74,
                            "length": 387,
                            "id": "M1",
                            "_type": "PrivateTransportManeuverType"
                        },
                        {
                            "position": {
                                "latitude": ,
                                "longitude": 
                            },
                            "instruction": "",
                            "travelTime": 25,
                            "length": 12,
                            "id": "M2",
                            "_type": "PrivateTransportManeuverType"
                        },
                        {
                            "position": {
                                "latitude": ,
                                "longitude": 
                            },
                            "instruction": "",
                            "travelTime": 53,
                            "length": 515,
                            "id": "M3",
                            "_type": "PrivateTransportManeuverType"
                        },
                        {
                            "position": {
                                "latitude": ,
                                "longitude": 
                            },
                            "instruction": "",
                            "travelTime": 59,
                            "length": 309,
                            "id": "M4",
                            "_type": "PrivateTransportManeuverType"
                        },
                        {
                            "position": {
                                "latitude": ,
                                "longitude": 
                            },
                            "instruction": "Arrive at target",
                            "travelTime": 0,
                            "length": 0,
                            "id": "M19",
                            "_type": "PrivateTransportManeuverType"
                        }
                    ]
                }
            ],
            "summary": {
                "distance": 43301,
                "trafficTime": 2648,
                "baseTime": 2191,
                "flags": [
                    "tunnel",
                    "motorway",
                    "builtUpArea"
                ],
                "text": "",
                "travelTime": 2191,
                "_type": "RouteSummaryType"
            }
        }
    ],
    "language": "en-us"
}

}

(я убрал 15 путевых точек и координат по соображениям конфиденциальности и длины)

Я хочу получитьвложенный массив «маневрирует» как отсортированный список с приложением springboot и restTemplate.

Я знаю, как добраться до объектов.Я уже использовал JSON2POJO маппер и у меня есть все доступные классы.С

@Bean
public CommandLineRunner run(RestTemplate restTemplate) throws Exception {
    return args -> {

        ResponseEntity<Response[]> responseEntity = restTemplate
                .getForEntity("https://route.api.here.com/routing/7.2/calculateroute.json?app_id=xjipTEag66SG6fNwgEQm&app_code=0eiHle7fs2IZsXChP2sWKQ&waypoint0=geo!" + start + "&waypoint1=geo!" + end + "&mode=fastest;car;traffic:disabled", Response[].class);
        Response[] objects = responseEntity.getBody();
        HttpStatus statusCode = responseEntity.getStatusCode();
        log.info("Status" + statusCode);
        Arrays.asList(objects).forEach(maneuver -> log.info(maneuver.toString()));
    };
}

Дает мне ошибку десериализации.

@Bean
public CommandLineRunner run(RestTemplate restTemplate) throws Exception {
    return args -> {
        Response response = restTemplate.getForObject(
                "https://route.api.here.com/routing/7.2/calculateroute.json?app_id=xjipTEag66SG6fNwgEQm&app_code=0eiHle7fs2IZsXChP2sWKQ&waypoint0=geo!" + start + "&waypoint1=geo!" + end + "&mode=fastest;car;traffic:disabled", Response.class);
        log.info(response.toString());
    };

Имеет то, что я могу прочитать отдельные объекты, такие как "ID" и перечислить их в одну строку:

2019-05-22 19:09:34.253  INFO 15928 --- [           main] trackr.GetRest                      : No active profile set, falling back to default profiles: default
2019-05-22 19:09:34.636  INFO 15928 --- [           main] trackr.GetRest                      : Started GetRest in 0.561 seconds (JVM running for 1.016)
2019-05-22 19:09:35.067  INFO 15928 --- [           main] klib.trackr.GetRest                      : [[[M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11, M12, M13, M14, M15, M16, M17, M18, M19]]]

Я рад любым предложениям.Я довольно новичок в Java и Spring restTemplate, я пробовал разные решения, которые нашел в StackOverflow, но либо я их неправильно использую, либо я не правильно понимаю.Очень ценю любой совет.

...