Исключение при сериализации объекта без состояния с Джексоном Джсоном - PullRequest
0 голосов
/ 15 ноября 2011

Я использовал реализацию Джексона протокола json в моем собственном небольшом проекте, и некоторое время назад все шло хорошо, пока я не решил (впервые) сериализовать объект без состояния.

Я знаю, что это может звучать странно, зачем мне отправлять объект без состояния?Я сериализую запросы к серверу, и этот конкретный не содержит полей, просто код для инструкции на стороне сервера.Моя модель может принимать любую реализацию ClientRequest и вызывать ее метод execute ().Я хочу, чтобы он работал, даже если запрос приходит без полей.

Код выглядит следующим образом:

public class GetWallInputsRequest implements ClientRequest<List<WallInput>>
{
   @JsonCreator public GetWallInputsRequest()
   {
   }

   @Override public ServerResponse<List<WallInput>> perform()
   {
      return new WallMessageResponse( Wall.WALL.getInputs() );
   }
}

Я получаю JsonMappingException: не найден сериализатор для класса GetWallInputsRequest.Google не помогает мне, что заставляет меня задуматься, просто ли я глупый.К сожалению, я не вижу выхода из этого.

Я решил это после того, как много грубой силы попробовал разные вещи.И, решив это, я имею в виду не понял это, но заставил это работать.Если добавить строку:

@JsonAutoDetect(getterVisibility=JsonAutoDetect.Visibility.NONE)

над объявлением класса, это, похоже, сработает.Почему это необходимо, я не знаю, но теперь он отправляет пустую строку json вместо сбоя.

1 Ответ

0 голосов
/ 15 ноября 2011

В документации написано

Значение, которое указывает, что никакие модификаторы доступа не могут быть автоматически обнаружены: это можно использовать для явного отключения автоопределения для указанных типов.

Поскольку в вашем классе нет явных обозначений, сообщающих Джексону, что существует поле или метод для сериализации, он определяет, что искать действительно нечего. Я полагаю, что без этого будет ожидаться что-то , как предлагается в цитируемой документации.

http://jackson.codehaus.org/1.9.0/javadoc/org/codehaus/jackson/annotate/JsonAutoDetect.Visibility.html

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