2016-10-08 13 views
1

У меня есть очень простой клиент отдыха, и я хотел бы разобрать ответ службы в пользовательском ResponseBody класса:Spring RestTemplate - Что делает ResponseBody класс выглядеть

ResponseEntity<CustomResponseBody> entity = restTemplate.postForEntity(uri, request, CustomResponseBody.class); 

Фактический вопрос, как класс CustomResponseBody должен выглядеть, с точки зрения сеттеров, добытчиков и конструкторами в предположении, что выход из службы я потребляющий является JSON как:

{item1:something, item2:otherthing} 

и мой метод makeRestTemplate является:

@Bean 
    public RestTemplate makeRestTemplate() { 
    RestTemplate restTemplate = new RestTemplate(); 

    HttpComponentsClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory(); 
    requestFactory.setConnectTimeout(TIMEOUT_MILLIS); 
    requestFactory.setReadTimeout(TIMEOUT_MILLIS); 
    restTemplate.setRequestFactory(requestFactory); 
    restTemplate.setErrorHandler(errorHandler); 

    List<HttpMessageConverter<?>> converters = restTemplate.getMessageConverters(); 
    for (HttpMessageConverter<?> converter : converters) { 
     if (converter instanceof MappingJackson2HttpMessageConverter) { 
      MappingJackson2HttpMessageConverter jsonConverter = (MappingJackson2HttpMessageConverter) converter; 
      ObjectMapper objectMapper = makeObjectMapper(); 
      jsonConverter.setObjectMapper(objectMapper); 
      jsonConverter.setSupportedMediaTypes(Arrays.asList(new MediaType("application", "json", MappingJackson2HttpMessageConverter.DEFAULT_CHARSET), 
        new MediaType("text", "javascript", MappingJackson2HttpMessageConverter.DEFAULT_CHARSET))); 
     } 
    } 

    return restTemplate; 
} 

У меня была работа с анотацией lombok @Data, но я хотел бы знать, что является минимальным требованием класса customResponseBody для фактического анализа ответа.

UPDATE:

Простой POJO делает работу, у меня были некоторые проблемы при попытке реализовать собственный сеттер и методов получения, похоже, что-нибудь рядом простых методах получения и установки делает процесс связывания неудачу.

Принято

import lombok.Data; 
import lombok.NoArgsConstructor; 

@NoArgsConstructor 
@Data 
public class CustomResponseBody { 
    private String item1; 
    private String item2; 
} 

непринятый

import lombok.Setter; 
import lombok.Getter; 
import lombok.NoArgsConstructor; 

@NoArgsConstructor 
public class CustomResponseBody { 

    @Getter 
    @Setter 
    private String item1; 

    @Getter 
    private String item2; 

    public void setItem2(String item2) { 
     if ("something".equals(item2)) { 
      this.item2 = "whatever"; 
     } else { 
      this.item2 = "otherstuff" 
     } 
    } 
} 

ответ

0

Она должна быть простой POJO реализует Сериализуемые, предварительно включен HttpMessageConverters должен быть в состоянии преобразовать любой Serializable POJO на основе ваших Content-Type в заголовках.

0

Если json является {"item1": value1, "item2": value2}, и вам просто нужны два значения, то ваше сопоставление pojo должно иметь два поля: "item1" и "item2" с теми же типами, что и value1 и value2. Установщики по умолчанию и геттеры должны быть в порядке.