2014-02-18 2 views
1

나는 Spring MVC 프로젝트를 가지고 있으며 json으로 응답 (java 객체)을 자동 변환하도록 jackson 라이브러리를 구성했으며 다음과 같이 GET 요청에서 작동한다. A는 내가 POST 요청을 처리하고 JSON의 요청에서 개체를 얻을 때Spring MVC로 API REST에서 객체를 얻는 방법

@RequestMapping(method = RequestMethod.GET) 
public @ResponseBody Orders createOrder(Model model){ 

      Orders orders = new Orders(); 
      //Populate orders..... 

    return orders; 
} 

는하지만, 나는 JSON에서 개체의 주문을 만들 수 없습니다 봄과 같은 오류 "400 잘못된 요청"을 얻는다. GET 메소드 응답과 동일한 json 파일을 넣었으므로 파일의 형식이 잘 맞았다 고 가정합니다. 내가 문자열로 @RequestBody 클래스 (createOrder (@RequestBody 문자열 주문))를 변경하는 경우

@RequestMapping(method = RequestMethod.POST) 
public @ResponseBody ResponseEntity<String> createOrder(@RequestBody Orders orders){ 

    LOG.info(orders.toString()); 

    return new ResponseEntity<String>("", HttpStatus.CREATED); 
} 

는 POST 요청이 잘 처리됩니다.

입력 json을 Order 클래스에 매핑하는 매퍼를 만들어야합니까?

업데이트 : 가장 간단한 예제를 만들었습니다 을 시도하고 나는 오류 400 Exmaple받을 :

도메인 :

@RequestMapping(method = RequestMethod.POST) 
public @ResponseBody ResponseEntity<String> createOrder2(@RequestBody Home orders){ 
    return new ResponseEntity<String>("{}", HttpStatus.CREATED); 
} 
:

public class Home { 
    private String address = "Calle mármoles"; 

    public Home(){ 

    } 

    public String getAddress() { 
     return address; 
    } 

    public void setAddress(String address) { 
     this.address = address; 
    } 
} 

컨트롤러 Home.java

JSON (POST) :

{ 
    address: "Prueba" 
} 

[SOLVED]

매개 변수 이름에 ""을 넣지 않았습니다.

+0

게시 방법을 어떻게 호출합니까? 요청 본문은 GET의 json만으로 구성되어 있습니까? – Avi

+0

예, 본문에는 JSON 만 있습니다. –

+1

아마도 솔루션을 답으로 입력하는 것이 가장 좋습니다. A)이 질문은 올바르게 풀 렸습니다. B) 앞으로 비슷한 문제가 생길 수있는 다른 사람들에게 분명합니다. – Edd

답변

0

[SOLVED]

매개 변수 이름에 ""을 넣지 않았습니다.

게다가 클래스는 잭슨 라이브러리가 객체를 만들 수 있도록 기본 빈 생성자가 있어야합니다.

관련 문제