Unmarshal JSON Содержимое InputStream вручную в службе JAX-RS? - PullRequest
0 голосов
/ 08 марта 2020

У меня есть хранилище данных с API-интерфейсом REST, использующим JAX-RS / Jersey / Jackson. Я должен поддерживать несколько форматов загрузки и выгрузки данных в этом хранилище, и для загрузки есть одна конечная точка API:

    @POST
    @Path("/alignment")
    @Consumes(MediaType.MULTIPART_FORM_DATA)
    @Produces(MediaType.APPLICATION_JSON + "; charset=utf-8")
    public Response importAlignment(@DefaultValue("") @FormDataParam("name") String name,
                                    @FormDataParam("userId") String userId,
                                    @FormDataParam("filetype") String filetype,
                                    @FormDataParam("file") InputStream uploadedInputStream,
                                    @FormDataParam("file") FormDataContentDisposition fileDetail) { ... }

Аргумент filetype говорит мне, чего ожидать в uploadedInputStream и может ссылаться на несколько разных форматов - XML, CSV, XLSX, а также JSON (на самом деле, два разных возможных формата JSON! Не спрашивайте.) Хранилище уже позволяет пользователю загружать данные в одном из этих JSON форматов; этот метод возвращает Response, объектом которого является AlignmentModel. Я хотел бы иметь возможность повторно загрузить загруженные данные JSON, но для этого мне нужно сделать ... что-то ... в рамках метода importAlignment, который приведет к отмене маршалинга JSON в uploadedInputStream назад. в AlignmentModel. Как мне это сделать?

...