Джексон не может распознать идентификатор типа @class в полезной нагрузке JSON - PullRequest
0 голосов
/ 18 июня 2019

У меня есть иерархия Java POJOS, базовый класс абстрактный. Чтобы Джексон мог десериализовать из JSON в правильные конкретные типы, я пометил базовый класс @JsonTypeInfo(use=JsonTypeInfo.Id.CLASS). Тем не менее, я получаю следующую ошибку, когда Джексон пытается десериализации:

 com.fasterxml.jackson.databind.exc.InvalidTypeIdException: Missing type id when trying to resolve subtype of [simple type, class com.foo.MyAbstractClass]: missing type id property '@class'
 at [Source: (byte[])""{\"id\":10,\"params\":[\"foo\",\"bar\"],\"@class\":\"com.foo.MyConcreteClass\"}""; line: 1, column: 1]

Поле идентификатора типа @class находится в полезной нагрузке JSON, но Джексон не может его найти. Есть идеи, что происходит? Обратите внимание, что десериализация Джексона происходит прозрачно; Я использую Spring Cloud Stream.

1 Ответ

0 голосов
/ 19 июня 2019

Наконец-то разобрался.Оказывается, что полезная нагрузка сообщения на самом деле интерпретировалась Джексоном как строковое значение JSON, а не как объект JSON, из-за того, как оно отправлялось приложением-производителем.Разбирая внешние кавычки и удаляя их, Джексон затем правильно анализировал строку.

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