Невозможно сериализовать байтовый массив из маркера START_OBJECT при отправке строки из AngularJS в конечную точку Java - PullRequest
0 голосов
/ 08 марта 2019

В настоящее время я отправляю файл 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...