Java jackson с составным файлом

#java #json #spring #jackson

#java #json #весна #джексон

Вопрос:

Ну, сначала я объясню, что я делаю, я использую Spring 4 , и мне нужно сделать одно приложение для отправки некоторой информации с некоторыми вложениями [PDF], и каждый из этих файлов имеет один заголовок, ссылку и т. Д. Итак, я немного перепутал объекты JSON Jackson 2.3.3 .

Итак, прежде чем поместить свой код, я хочу спросить, могу ли я использовать MultipartFile with Jackson (или, может быть, File)? После того, как я увидел много ответов и информации в Интернете о файлах и JSON , мне не ясно, могу ли я отправлять файлы JSON со стороны клиента. И если это возможно, могу ли я отправить этот файл в JSON объект с одним свойством, содержащим массивы объектов, каждый объект будет содержать строку типа свойств, а последним будет файл.

Это мой POJO :

 public class JsonDocBase{

    protected String tp="invoice";

    protected String cmt;

    protected String title;

    protected String lang="FR";

    protected String ref;

    protected MultipartFile file;

    -----get.. and set....
}


public class JsonOtherInformation{    
    String nm;

    String cmt;

    String orgMsgId;

    String tp;

    get.... set....

}
  

и эти 2 объекта будут в

 public class JsonTest {

    private JsonOtherInformation info;

    private JsonDocFile doc[];

    set... get...

}
  

и моя служебная пружина

 @RequestMapping(value = "/simple", method = RequestMethod.POST)
public MessageDb creatSimpleeActivationRequest(@RequestBody JsonTest jRequestSimple
  

Ответ №1:

Я думаю, что отправлять содержимое файла не очень хорошая идея JSON . Вы можете использовать JSON для возврата информации о файле, который может содержать URL для загрузки данного файла. Этот метод используется в Google Drive SDK. Files.get используется для извлечения метаданных файла, и если вы хотите загрузить содержимое файла, вы можете использовать downloadUrl свойство из объекта метаданных. (Смотрите также Drive SDK — Загрузка файлов).

Но если вы действительно хотите вернуть содержимое файла JSON , вам нужно преобразовать это содержимое в String . Вы можете использовать Base64 для кодирования содержимого, и клиент должен декодировать его после синтаксического анализа. Вы можете написать пользовательский сериализатор, который может преобразовывать MultipartFile объект в строку.

Комментарии:

1. Спасибо, после некоторого теста я поместил файл в base64 на стороне клиента, а после на стороне сервера изменил base64 на file