2017-03-06 4 views
0

안녕 나는 다음과 같은 클래스가 :자바 제네릭과 잭슨 매퍼

public class MyRequest { 
} 

public class MyResponse { 
} 

public class Request<T> { 
private String code; 
private T request; 

public setCode(String code) { 
    this.code = codel 
    } 

public setRequest(T request) { 
    this.request = request 
    } 
} 

및 서비스 요청 방법 다음

public MyResponse getMyResponse(Request<MyRequest> myRequest) { 
//process 
try { 
    ObjectMapper mapper = new ObjectMapper(); 
    String jsonInString = mapper.writeValueAsString(myRequest); 
    System.out.println(jsonInString); 
    } catch(Exception exp) {} 
} 

다음 Json 요청은 JavaScript에서 전송됩니다.

{ 
    "code":"TESTCODE", 
    "request":null 
} 

요청을 보낸 후 잘못된 Json 오류가 발생했습니다. 누군가가 내 요구 Json 또는 다른 잘못 된 무엇이 잘못 말할 수 있습니다 ..?

+0

, 당신의 문제는 직렬화이다. 이 도움이 될 것입니다 : http://stackoverflow.com/questions/11664894/jackson-deserialize-using-generic-class – Eric

+0

자바 스크립트에서 JSON deserialize하는 코드는 어디입니까? – Coder

+0

Firefox의 HTTP 요청 부가 기능을 사용하여 전송합니다. 이것은 전체 코드가 아닙니다 ... Java generics가없는 이전 코드가 완벽하게 작동하고 있습니다. 또한 Jackson이 Spring 측에서 사용됩니다. – Adds

답변

0

혹시 '요청'모델을 내부 클래스로 사용하고 계십니까? 예인 경우

  • 정적 인 수정자를 '요청'으로 사용해보십시오.
  • 또는 오히려 직렬화 복원에 문제가 발생할 않는 디자인으로

비 정적 내부 클래스는 외부 클래스에 대한 참조를 포함하는 별도의 클래스로 모델 '요청'밖으로 이동합니다. 당신이 일반 실제로 null이 아닌 긍정적 경우

http://www.cowtowncoder.com/blog/archives/2010/08/entry_411.html