Я использовал реализацию Джексона протокола 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 вместо сбоя.