Пример примера JSONView для предотвращения десериализации значений по умолчанию

У меня есть простой класс для выдачи информации о счетчике и курсоре db.

public class Cursor
{
    public String cursor = null;
    public int count = -1;
}

Я не хочу отправлять количество и курсор (во время сериализации), если они равны нулю или -1, которые установлены по умолчанию.

Изучая, я понял, что мне следует использовать представление, но я не могу понять, как его использовать и как реализовать представление, чтобы избежать значений по умолчанию.

Для этого класса десериализация не требуется.

Спасибо.


person cloudpre    schedule 25.09.2012    source источник


Ответы (2)


Если вы используете Jackson, вы можете дать

@JsonInclude(Include.NON_NULL) 
public class Cursor
{
     public String cursor = null;
     public Integer count = null;
}

Я изменил int на Integer, когда вы даете -1 значение для этого поля.
Вы можете проверить это post также.

person basiljames    schedule 25.09.2012
comment
Спасибо. Но jsonInclude работает на 2.x, но я использую 1.7. Я опубликую еще один ответ для пользователей 2.x. - person cloudpre; 26.09.2012

Если вы используете 2.x, приведенный выше ответ является лучшим. Используйте аннотацию JSONInclude.

Однако, если вы используете меньшие версии, я не верю, что для этого есть какие-либо аннотации. Мы должны настроить ObjectMapper.

public ObjectMapperProvider()
    {
    mapper = new ObjectMapper();

    mapper.configure(SerializationConfig.Feature.WRITE_NULL_PROPERTIES,
        false);
    mapper.configure(SerializationConfig.Feature.WRITE_NULL_MAP_VALUES,
        false);

    }

В Web.xml

  <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
         <init-param>
                <param-name>com.sun.jersey.config.property.packages</param-name>
                <param-value>com.your.package; org.codehaus.jackson.jaxrs</param-value>
            </init-param>
         <load-on-startup>1</load-on-startup>
      </servlet>

com.your.package должен содержать ваш новый пользовательский класс objectmapper.

person cloudpre    schedule 26.09.2012