【问题标题】:Does resteasy support automatically mapping String/JSON MultipartFormDataInput to a object using jackson?resteasy 是否支持使用 jackson 自动将 String/JSON MultipartFormDataInput 映射到对象?
【发布时间】:2017-02-21 22:01:20
【问题描述】:

在我的休息服务中,我尝试使用 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);

我正在使用杰克逊对象映射器将正文字符串转换为 JSON 对象。这里的问题是这个映射将忽略正常的 bean 验证,我需要手动重新实现它。

resteasy 是否支持使用 jackson 自动将 String/JSON 部分映射到对象?如果是,谁能帮我从 MultipartFormDataInput 对象中获取此对象?

【问题讨论】:

    标签: java json rest jackson resteasy


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-19
      • 1970-01-01
      • 2021-05-27
      • 2019-09-15
      • 2019-06-26
      • 2017-10-21
      • 2016-11-07
      • 2013-02-26
      相关资源
      最近更新 更多