2012-06-28 2 views
0

나는 REST 호출을 만들고, MyClass 객체 목록이 들어있는 json을 다시 얻고 싶다.목록을 반환하는 방법 <MyObject> REST 호출을 사용 하시겠습니까?

javax.ws.rs.WebApplicationException : 사실 나는이 예외가 javax.xml.bind.UnmarshalException - 링크 된 예외 : [com.sun.istack.internal.SAXParseException2; lineNumber : 0; columnNumber : 5; 예기치 않은 요소 (uri : "", local : "id"). 예상 요소는 < {} snowCannonDataEntity>]을

하는 코드 : json으로는 서버에서 반환

public List<'MyClass> getLIst() 

{ 
ClientConfig config = new DefaultClientConfig(); 
config.getClasses().add(MyObjectMapper.class); 
Client client = Client.create(config); 
WebResource resource = client.resource(HOST_PATH).path(PATH).type(MediaType.APPLICATION_JSON_TYPE).accept(MediaType.APPLICATION_JSON_TYPE); 
return resource.get(new GenericType<List<MyClass>>() { 
    }); 
} 


@XmlRootElement 
public class MyClass 
{ ... } 

답변

0

어떤 이유로 구문 분석 할 수 없습니다. MyClass 소스뿐만 아니라 서버에서 오는 json도 표시해야합니다. 당신은 목록 대신 문자열을 요청하여 서버에서 오는 JSON을 인쇄 할 수 있습니다

ClientConfig config = new DefaultClientConfig(); 
config.getClasses().add(MyObjectMapper.class); 
Client client = Client.create(config); 
WebResource resource = client.resource(HOST_PATH).path(PATH).accept(MediaType.APPLICATION_JSON_TYPE); 
System.out.println(resource.get(String.class)); 
1

the suggestion of Paul Sandoz에 따라 코드가 참으로 갈 수있는 방법입니다.

그러나 이것이 작동하지 않으면 기본 JAXB 공급자 대신 Jackson JSON 공급자를 사용하십시오. 이것은 나를 위해 트릭을했습니다 :

import org.codehaus.jackson.jaxrs; 

ClientConfig config = new DefaultClientConfig(); 
config.getClasses().add(MyObjectMapper.class); 
config.getClasses().add(JacksonJsonProvider.class); 
Client client = Client.create(config); 
관련 문제