весна 4.3.3
Я пытаюсь преобразовать Pojo в JSON, помечая контроллер как
@RestController, проблема в том, что некоторые элементы связаны спервая буква ниже вместо верхнего регистра,
Ex:
"Id": 1, //This is ok
"customerId": "1234", //Instead of CustomerId, this has customerId
...
Контроллер
@RestController
...
public class CustomerController{
...
@Consumes({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
public CustomerResponse postCustomerRequest(final HttpServletRequest request) {
Я хочу, чтобы это было в верхнем регистре.Pojo - это, в основном, класс, сгенерированный xjc из xsd, и он содержит
@XmlElement(name = "Id")
protected int id;
@XmlElement(name = "CustomerId")
protected String customerId;
...
public int getId() {
return id;
}
public void setId(int value) {
this.id = value;
}
public String getCustomerId() {
return customerId;
}
public void setCustomerId(String value) {
this.customerId = value;
}
Это связано с сеттером, геттером для каждого атрибута.В Контроллере я получил значение ObjectMapper без учета регистра также равным true,
mapper.configure(MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES, true);
Я также попытался, пометив Контроллер как @Controller вместо @RestController, предоставив @ResponseBody перед методом,
Контроллер
@Controller
...
public class CustomerController {
...
@Consumes({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
@ResponseBody
public String postCustomerRequest(HttpServletRequest request) {
...
//Used PropertyNamingStrategy with the ObjectMapper, converted the first character to an upper case,
ObjectMapper mapper = new ObjectMapper();
mapper.configure(MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES, true);
...
CustomerResponse response=createCustomer(document,objectFactory);
mapperObj.setPropertyNamingStrategy(new CustomerJsonNameStrategy());
String jsonOutput = mapperObj.writeValueAsString(response);
return jsonOutput;
Если я вижу значение jsonOutput во время отладки в Eclipse, он выводит элементы json в правильном случае, но ответ остальному клиенту приходит как,
{"errors": [{
"message": "No converter found for return value of type: class java.lang.String",
"type": "IllegalArgumentError"
}]}
Похоже, сериализатор Джексона вмешивается в ответ и выдает вышеуказанную ошибку.
Какое решение для этого?