2017-02-21 10 views
0

私の休息中のサービスでは、multipart/form-dataを使用してJSONオブジェクトでファイルをアップロードしようとしています。バックエンドでresteasy MultipartFormDataInputを使用してリクエストとアクセスファイルとJSONオブジェクトを処理していますjacksonを使用してString/JSON MultipartFormDataInputをオブジェクトに自動的にマッピングするサポートがありますか?

私のファイルとJSONオブジェクトは以下のように処理できます。

@POST 
@Consumes(MediaType.MULTIPART_FORM_DATA) 
public void uploadFile(MultipartFormDataInput input) throws IOException { 
    Map<String, List<InputPart>> uploadForm = input.getFormDataMap(); 
    List<InputPart> fileInputParts = uploadForm.get("uploadedFile"); 
    List<InputPart> jsonInputParts = uploadForm.get("content"); 

    //convert the uploaded file to inputstream 
    InputStream inputStream = fileInputParts.get(0).getBody(InputStream.class, null); 
    byte[] bytes = IOUtils.toByteArray(inputStream); 

    //Convert the uploaded JSON object 
    GenericRestBean bean = new ObjectMapper().readValue(jsonInputParts .get(0).getBodyAsString(), GenericRestBean.class); 

私はjacksonオブジェクトマッパーを使用してボディストリングをJSONオブジェクトに変換しています。ここでの問題は、このマッピングが通常のBeanの検証を無視し、手動で実装する必要があることです。

自動的にString/JSONの部分をjacksonを使用してオブジェクトにマッピングするサポートはありますか?はいの場合は、MultipartFormDataInputオブジェクトからこのオブジェクトを取得する手助けができますか?

答えて

0

さらに読むことで、私の問題の解決策を見つけることができました。以下のように、GenericTypeを使用して入力部分をアンマーシャリングすることができます。

GenericRestBean bean = content.get(0).getBody(new GnericType<GenericReferenceRestBean>() {}); 

しかし、私はまだBean検証で問題があります。 Beanの検証はBean内部に置いているので、Beanを検証する必要があるときはいつでも、@Valid注釈を置く必要があります。しかし、ここでそのアノテーションをどのように置くことができますか?誰かがアイデアを持っている場合は、共有してください。

関連する問題