У меня есть следующий POJO:
class TestPojo {
private Long testId = null;
private String testString = null;
private boolean testBoolean = false;
private Float testFloat = null;
private int testInt = 0;
private Collection<String> testCollection = new TreeSet();
Long getTestId() {
return testId;
}
void setTestId(Long testId) {
this.testId = testId;
}
String getTestString() {
return testString;
}
void setTestString(String testString) {
this.testString = testString;
}
boolean getTestBoolean() {
return testBoolean;
}
void setTestBoolean(boolean testBoolean) {
this.testBoolean = testBoolean;
}
Float getTestFloat() {
return testFloat;
}
void setTestFloat(Float testFloat) {
this.testFloat = testFloat;
}
int getTestInt() {
return testInt;
}
void setTestInt(int testInt) {
this.testInt = testInt;
}
Collection<String> getTestCollection() {
return testCollection;
}
void setTestCollection(Collection<String> testCollection) {
this.testCollection = testCollection;
}
}
У меня есть два остальных ответа API, один из которых возвращает один экземпляр TestPojo в формате JSON:
{
"testId": 1,
"testString": "testStringA",
"testBoolean": false,
"testFloat": 1.0,
"testInt": 1,
"testCollection": [
"testCollectionA",
"testCollectionB"
]
}
Другой Ответ API rest возвращает карту нескольких TestPojo:
{
"TestPojoA": {
"testId": 1,
"testString": "testStringA",
"testBoolean": false,
"testFloat": 1.0,
"testInt": 1,
"testCollection": [
"testCollectionA",
"testCollectionB"
]
},
"TestPojoB": {
"testId": 2,
"testString": "testStringB",
"testBoolean": true,
"testFloat": 1.1,
"testInt": 2,
"testCollection": [
"testCollectionC",
"testCollectionB"
]
}
}
Мой шаблон отдыха с MappingJackson2HttpMessageConverter правильно возвращает POJO для первого JSON:
RestTemplate restTemplate = new RestTemplate();
MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter = new MappingJackson2HttpMessageConverter();
mappingJackson2HttpMessageConverter.setSupportedMediaTypes(Collections.singletonList(MediaType.APPLICATION_JSON));
restTemplate.getMessageConverters().add(mappingJackson2HttpMessageConverter);
TestPojo testPojo = restTemplate.getForObject("http://127.0.0.1:8081/test/getPojoInstance", TestPojo.class);
Я не могу получить POJO на карте, чтобы правильно конвертировать, однако, однако? Я пробовал различные способы, я думал, что следующее будет работать, но это просто возвращает карту с двумя строковыми значениями вместо String & POJO:
RestTemplate restTemplate = new RestTemplate();
MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter = new MappingJackson2HttpMessageConverter();
mappingJackson2HttpMessageConverter.setSupportedMediaTypes(Collections.singletonList(MediaType.APPLICATION_JSON));
restTemplate.getMessageConverters().add(mappingJackson2HttpMessageConverter);
Map<String, TestPojo> testPojoMap = restTemplate.getForObject("http://127.0.0.1:8081/test/getPojoMap", Map<String, TestPojo>.class);
Я знаю, что могу преобразовать строковое значение в моей карте в TestPojo после того, как я получу ответ, но мне просто любопытно, если я что-то не так делаю в первую очередь?