web-dev-qa-db-ja.com

Spring RestTemplateのオブジェクトからリストを取得する方法

オブジェクトからリストを取得する方法は?以下に私のコードを見つけることができます:

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

実際、オブジェクト変数はオブジェクトのリスト(文字列)であり、これらすべての文字列を取得する必要があります。

System.out.println(object.toString());を出力すると、次のようになります。

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

これらの文字列のリストを動的に使用するには取得する必要があります。助けていただけますか?

8
Tom

これを試してください。これは動作するはずです。

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

簡単な場合、上記のコードは機能しますが、マッピングする複雑なjson構造がある場合は、ParameterizedTypeReferenceを使用することが理想的です。

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

回避策としてこれを試すことができます

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

あるいは、 ObjectMapper のようなライブラリを使用できます。これは、json文字列を目的のモデルに直接変換します

0
meShakti

このオブジェクトが常にListになることが確実な場合は、キャストするだけです

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

ただし、それをList<String>として直接キャストすることはできません。そのため、型付きリストを作成するには、ループまたはストリームによって要素の型を確認する必要があります。使用されたAPIが実際の型を返す方法はありますか?

0
HBo