#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