2015-02-04 1 views
1

내가 사용하여 REST 서비스를 구현하기 위해 노력하고 봄 JAXB 주석을 사용하여 JSON을 생성 4. 응용 프로그램이 자바 7 사용하여 구축하고 톰캣 7이, 잭슨과 봄

에서 실행되는

나머지 방법 돌아갑니다 JSON의 고객 객체 응용 프로그램은 주석으로 구동됩니다.

고객 클래스에는 JAXB 어노테이션이 있습니다. 잭스 항아리가 클래스 경로에 있습니다. 제 생각에 잭슨은 JAXB 주석을 사용하여 JSON을 생성합니다.

고객 등급 : 내가 JSON에서 고객의 개체를 반환하는 REST 방식

(봄 4에 따라) @RestController과 REST 서비스 클래스를 주석 한

@XmlRootElement(name = "customer") 
public class Customer { 
private int id; 
private String name; 
private List favBookList; 
@XmlAttribute 
public int getId() { 
return id; 
} 
public void setId(int id) { 
this.id = id; 
} 
@XmlElement 
public String getName() { 
return name; 
} 
public void setName(String name) { 
this.name = name; 
} 

@XmlElementWrapper(name = "booklist") 
@XmlElement(name="book") 
public List getFavBookList() { 
return favBookList; 
} 
public void setFavBookList(List favBookList) { 
this.favBookList = favBookList; 
} 
} 

:

@RequestMapping(value="/customer.json",produces="application/json") 
public Customer getCustomerInJSON(){ 
    Customer customerObj = new Customer(); 
    customerObj.setId(1); 
    customerObj.setName("Vijay"); 
    ArrayList<String> favBookList = new ArrayList<String>(); 
    favBookList.add("Book1"); 
    favBookList.add("Book2"); 
    customerObj.setFavBookList(favBookList); 
    return customerObj; 

} 

내가 예상 한 결과, 나는 URL을 명중 할 때 :

{"id":1,"booklist":{"book":["Book1","Book2"]},"name":"Vijay"} 

내가 무엇을 얻을 :

{"id":1,"name":"Vijay","favBookList":["Book1","Book2"]} 

잭슨은 JAXB 주석 @XmlElementWrapper (이름 = "booklist")을 무시하는 것 같다 @ XmlElement (name = "book") 고객 클래스의 getFavBookList() 메소드

Am I mi 무언가를 ssing?

안내가 필요합니다. 감사.

+0

는 변수 선언에서 이러한 주석을 넣지 않고이 기능 및 확인 – Vihar

+0

는 그것을 시도했다. 여전히 같은 결과를 얻습니다. –

답변

1

기본적으로 요점은 xml 주석을주고 Json 출력을 기대하고 있다는 것입니다.

xml 카운터 부분 @xmlElementWrapper에 대해 Json과 동일한 내용을 찾아야합니다.

잭슨 1.x에서 작동하는 데 사용하지만 잭슨 2.X에서

+0

그 주셔서 감사드립니다. 그러나 Jackson 1.9를 사용합니다. 확인이 필요합니다. –

+0

나는 Jackson과 해결책을 찾지 못했습니다. 그러나 MOXy를 사용하여 필요한 JSON을 구현할 수있는 토론이있었습니다. [link] http://stackoverflow.com/questions/7735245/jaxb-jackson-handling-arrays?answertab=active#tab-top 두 번째 생각에서 JSON이 자연스러운 JSON을 나타내지 않는다고 느낍니다. 현재 내가 얻은 결과는 자연스러운 JSON 결과를 나타내는 것처럼 보입니다. ** @ JsonProperty ("bookList") **를 사용하여 목록에 주석을 달 수 있습니다. 의견이 있으십니까? –

+0

네가 맞을 것입니다.하지만 둘 다 유효합니다. – Vihar