webentwicklung-frage-antwort-db.com.de

So erhalten Sie eine Liste von Object in Spring RestTemplate

Wie bekomme ich eine Liste von Object? Unten findest du meinen Code:

ResponseEntity<Object> responseEntity = restTemplate.getForEntity("localhost:8083/connectors/", Object.class);
Object object = responseEntity.getBody();

Eigentlich ist die Objektvariable eine Liste von Objekten (Strings) und ich muss alle diese Strings bekommen. 

Wenn ich es System.out.println(object.toString()); ausdrucken möchte, sieht es so aus:

[objvar, values, test, object, servar, larms, aggregates, sink, records]

Ich brauche eine Liste dieser Strings, um sie dynamisch nutzen zu können. Kannst du bitte helfen?

5
Tom

Probieren Sie es aus. Das sollte funktionieren. 

ResponseEntity<String[]> responseEntity = restTemplate.getForEntity("localhost:8083/connectors/", String[].class);
List<String> object = Arrays.asList(responseEntity.getBody());

In einfachen Fällen funktioniert der obige Code. Wenn Sie jedoch komplexe Json-Strukturen haben, die Sie abbilden möchten, ist es ideal, ParameterizedTypeReference zu verwenden.

ResponseEntity<List<String>> responseEntity =
        restTemplate.exchange("localhost:8083/connectors/",
            HttpMethod.GET, null, new ParameterizedTypeReference<List<String>>() {
            });
List<String> listOfString = responseEntity.getBody();
7
pvpkiran

Sie können dies als Abhilfe versuchen

List list = Java.util.Arrays.asList(object.toString());

Alternativ können Sie Bibliotheken wie ObjectMapper , Verwenden. Diese konvertiert die Json-Strings direkt in das gewünschte Modell

0
meShakti

Wenn Sie sicher sind, dass dieses Objekt immer ein List sein wird, können Sie es einfach umwandeln

List<?> lst= (List) responseEntity.getBody();

Sie können es jedoch nicht direkt als List<String>, daher müssen Sie den Elementtyp durch eine Schleife oder einen Stream prüfen, um eine typisierte Liste zu erstellen. Wie kann die verwendete API den tatsächlichen Typ zurückgeben?

0
HBo