resteasy是否支持使用jackson自动将String / JSON MultipartFormDataInput映射到对象?

时间:2017-02-21 22:01:21

标签: java json rest jackson resteasy

在我的休息服务中,我尝试使用multipart / form-data上传带有JSON对象的文件。我在后端使用resteasy MultipartFormDataInput来处理请求和访问文件以及JSON对象

我可以处理我的文件和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 Object mapper将body字符串转换为JSON对象。这里的问题是这个映射将忽略普通的bean验证,我需要手动重新实现它。

resteasy是否支持使用jackson自动将String / JSON部件映射到对象?如果是,任何人都可以帮我从MultipartFormDataInput对象中获取此对象吗?

1 个答案:

答案 0 :(得分:0)

通过进一步阅读,我能够为我的问题找到解决方案。我们可以使用GenericType解组输入部分,如下所示;

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

但我仍然遇到bean验证问题。由于我们将bean验证放在bean中,因此我们必须在需要验证该bean的地方放置@Valid注释。但在这里我怎么能把这个注释?如果有人有想法,请分享。