2016-02-07 3 views
2

У меня есть REST API с собственностью в application.properties, как показано ниже:RestTemplate не возвращают значение с Snake Дело в Spring REST

spring.jackson.property-naming-strategy: CAMEL_CASE_TO_LOWER_CASE_WITH_UNDERSCORES 

Все в порядке! Но когда я использую RestTemplate, как показано ниже, но я обнаружил, что все ключи в Snake Case равны null (например, имяEnglish), но регулярное имя ключа в порядке (например, ранг), как я могу решить эту проблему?

@Data 
@NoArgsConstructor 
@AllArgsConstructor 
@EqualsAndHashCode(exclude = {"id"}) 
@Entity 
public class Brand implements Serializable { 
    private static final long serialVersionUID = 9165709510160554127L; 

    @Id 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    private Long id; 

    @Version 
    private Integer version; 

    private String nameChinese; 
    private String nameEnglish; 
    private String rank; 
} 

я сохранил данные, как показано ниже:

Saved Brand: Brand(id=1, version=1, nameChinese=乐高, nameEnglish=Lego, rank=Top) 

Но когда я пытаюсь код, как показано ниже:

Brand brands = restTemplate.getForObject("http://localhost:8080/api/brand/lego", Brand.class); 
System.out.println(brands); 

В результате, как показано ниже, вы увидите все свойства ГорбатыйРегистр в нуль , хотя я установил для них значение:

Saved Brand: Brand(id=1, version=1, nameChinese=null, nameEnglish=null, rank=Top) 

Форма результата Формат Json CocoaRestCLient

{ 
    "id": 1, 
    "country_chinese": "芬兰", 
    "version": 1, 
    "homepage_url": "http://www.lego.com", 
    "country_english": "Finland", 
    "name_english": "Lego", 
    "rank": "Top", 
    "name_chinese": "乐高" 
} 
+0

Опубликовать пример JSON объект пожалуйста. –

+0

I модифицировано мой вопрос. – mikezang

+0

Спасибо, это поможет. Но можете ли вы PLS добавить пример полезной нагрузки JSON. Во избежание недоразумений. –

ответ

2

Я думаю, что у вас есть опечатка в application.properties. Правильное значение либо:

spring.jackson.property-naming-strategy=CAMEL_CASE_TO_LOWER_CASE_WITH_UNDERSCORES 

или

spring.jackson.property-naming-strategy=com.fasterxml.jackson.databind.PropertyNamingStrategy.LowerCaseWithUnderscoresStrategy 

См Appendix A. Common application properties от Spring Загрузочный Reference Guide:

spring.jackson.property-именование-стратегия = # Один из постоянных на Свойства Jackson'sNamingStrategy. Также может быть полностью квалифицированным классом имя подкласса PropertyNamingStrategy.

+0

Спасибо за ваш ответ! Но я не уверен, как совместить ваш код с моим, я получил бренд-объект из RestTemplate в качестве брендов бренда = restTemplate.getForObject («http: // localhost: 8080/api/brand/lego», Brand.class); то ваш код преобразует String в Brand ... – mikezang

+0

Ключевым сообщением является то, что вы измените стратегию именования на «CAMEL_CASE_TO_LOWER_CASE_WITH_UNDERSCORES». Что будет делать. –

+0

Что значит? Я использую spring.jackson.property-naming-strategy: CAMEL_CASE_TO_LOWER_CASE_WITH_UNDERSCORES в application.properties. – mikezang