В настоящее время я отправляю файл SVG в виде строки из JavaScript / AngularJS в мой бэкэнд Java, но получаю эту ошибку:
com.fasterxml.jackson.databind.exc.MismatchedInputException:Невозможно десериализовать экземпляр byte[]
из токена START_OBJECT (через цепочку ссылок: $ UpdateSvg ["productSvg"] -> $ ProductSvg ["svg"])
, и я не могу понять, почему.
Я написал код AngularJS для отправки файла "svg" в виде строки в конечную точку Java.Вот вызов AngularJS:
$scope.saveSvg = (svg) => {
let variantKey = $scope.variant.key;
let contentEncoding = "test string";
resourceExec({
resource: Variants.updateSvg({variantKey:variantKey}, productSvg:{contentEncoding: contentEncoding, svg: svg}),
success: blahhh (everything in this 'success' is ok)
});
};
Вот серверная часть Java, к которой обращается этот вызов
@PUT
@Path("updateSvg")
public Data updateSvg(final @PathParam("variantKey") Key<Variant> variantKey, final UpdateSvg update) {}
И вот где происходит ошибка, именно здесь входы из AngularJS превращаются в мою JavaPojos для бэкэнда, чтобы использовать.Все декораторы из lombok:
@Data
@AllArgsConstructor
public static class UpdateSvg {
//Other fields, working fine
public ProductSvg productSvg;
}
И, наконец, вот класс ProductSvg:
@Data
@AllArgsConstructor
public static class ProductSvg {
public String contentEncoding;
public byte[] svg;
}
Может кто-нибудь указать, что мне не хватает?Для повышения эффективности я устанавливаю ProductSvg.svg в байт []: вместо того, чтобы хранить SVG-файлы, я собираюсь сохранить полученный байт [] из GZIPPING SVG.