2012-09-05 2 views
1

복합 개체 deserializing 관련된 질문이 있습니다. 다음과 같이 나의 목적은 같습니다Java에서 복합 개체 deserializing

public class Outside 
{ 
    private String str1; 
    private Inside s; 
} 

public class Inside 
{ 
    private String str2; 
    public Inside(String str2) 
    { 
    this.field1 = str2; 
    } 
} 

내가 JSON

Outside o = wr.accept(MediaType.APPLICATION_JSON_TYPE).get(Outside .class); 

에 대한 응답을 역 직렬화 할 때 다음과 같은 예외 .... ClientHandlerException 얻을 : 외부 자바 클래스에 대한 메시지 본문 리더, Java 유형 클래스 Outside 및 MIME 미디어 유형 application/json을 찾을 수 없습니다.

내가 잘못하고있는 것이 확실하지 않습니다.

+0

'private Second s; 대신'private inside s; '를 사용 했습니까? 이것은 비 직렬화 문제보다 JAX-RS (Jersey Client?)와 유사합니다. –

+0

예. 그것을 고쳐 주셔서 감사합니다. – user1558274

+0

복합 개체가 아닌 경우 작동합니다. 그래서 그것은 비 직렬화와 관련이 있어야한다고 생각했습니다. – user1558274

답변

2

java.lang.NoSuchMethodException : .... 내부()

이것은 당신이없는 형태 Inside()의 생성자를 참조한다 - 만 Inside(String)있어. . 직렬화는 인수가없는 생성자를 필요로하기 때문에 리플렉션을 사용하여 객체를 인스턴스화하고 필드를 채울 수 있습니다.

따라서 인수가없는 생성자를 추가해야합니다.

+0

죄송합니다, 예외를 편집하고 혼란에 추가했습니다. – user1558274

+0

@ user1558274 : 아, 네, 그러면 다른 문제가있는 것 같습니다! –

관련 문제