Spring: JSON в объект Java с использованием @RequestBody

#jquery #json #spring #web-services #spring-mvc

#jquery #json #весна #веб-сервисы #spring-mvc

Вопрос:

Я работаю с веб-службой spring Rest.Я не могу преобразовать JSON в Java Object с помощью @RequestBody .

Метод контроллера:

 @RequestMapping(value="/test",method=RequestMethod.POST)
public @ResponseBody String test(@RequestBody Student s)
{

    System.out.print(s.getName() s.getMark() s.getRollNo());

    return "ok";
}
  

Класс POJO:

  public class Student implements Serializable {


private static final long serialVersionUID = 1L;
private int mark;
private String name;
private int rollNo;
    // getters and setters
  }
  

MessageConverter в Serlvet-context.xml:

     <beans:bean id="jacksonMessageConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"></beans:bean>
 <beans:bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<beans:property name="messageConverters">
  <beans:list>
    <beans:ref bean="jacksonMessageConverter"/>
  </beans:list>
</beans:property>
</beans:bean>
  

Я использую POSTMAN плагин rest client chrome для вызова веб-сервиса. JSON object передано:

 {"mark":30,"name":"sam","rollNo":100}
  

Я получаю « 415 Unsupported Media Type в качестве ответа при вызове веб-службы.

Пожалуйста, помогите. Заранее спасибо!

Комментарии:

1. Похоже, ваша строка JSON неверна. Смотрите кавычки

2. извините. По ошибке я написал здесь вот так. Я отредактировал его.

Ответ №1:

Проблема заключается в том, как вы вызываете контроллер для клиента POSTMAN.

В нем отсутствует заголовок Content-Type: application/json HTTP

Ответ №2:

Просто сделайте это

 @RequestMapping(value="/test",method=RequestMethod.POST,consumes = MediaType.APPLICATION_JSON_VALUE)