2017-03-06 10 views
0

こんにちは、私は次のクラスがあります。Javaのジェネリックとジャクソンマッパー

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

あなたはジェネリックが実際にnullでないことを肯定している場合は、あなたの問題は、逆シリアル化です。これは役立ちます:http://stackoverflow.com/questions/11664894/jackson-deserialize-using-generic-class – Eric

+0

javascriptからJSONをデシリアライズするコードはどこですか? – Coder

+0

FirefoxのHTTPリクエストアドオンを使用して送信します。これは完全なコードではありません... Javaジェネリックスを使用しない前のコードは完璧に動作していました。また、Spring側でJacksonが使用されています。 – Adds

答えて

0

万が一、モデル 'Request'を内部クラスとして使用していますか?はいの場合は、

  • という名前のstaticを使用してください。
  • かというには、逆シリアル化中に問題が発生しない設計により

非静的内部クラスは外側のクラスへの参照を含む別のクラスにモデル「要求」を外に移動します。

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