オブジェクトからリストを取得する方法は?以下に私のコードを見つけることができます:
_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]
_
これらの文字列のリストを動的に使用するには取得する必要があります。助けていただけますか?
これを試してください。これは動作するはずです。
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();
回避策としてこれを試すことができます
List list = Java.util.Arrays.asList(object.toString());
あるいは、 ObjectMapper のようなライブラリを使用できます。これは、json文字列を目的のモデルに直接変換します
このオブジェクトが常にList
になることが確実な場合は、キャストするだけです
List<?> lst= (List) responseEntity.getBody();
ただし、それをList<String>
として直接キャストすることはできません。そのため、型付きリストを作成するには、ループまたはストリームによって要素の型を確認する必要があります。使用されたAPIが実際の型を返す方法はありますか?