Как я могу контролировать, какие переменные экземпляра сериализуются при использовании JSON Джексона - PullRequest
0 голосов
/ 07 июля 2011

Я использую JSON Jackson для преобразования из POJO в JSON. Я использую

mapper.writeValueAsString(s);

Работает нормально. Проблема в том, что я не хочу конвертировать все переменные класса в JSON. Любой, кто знает, как это сделать; есть ли какая-нибудь функция для ObjectMapper, в которой мы можем указать , не преобразуйте этот класс в JSON .

Ответы [ 2 ]

3 голосов
/ 07 июля 2011

Аннотируйте поля, которые хотите игнорировать, с помощью @JsonIgnore ( JavaDoc ).

1 голос
/ 07 июля 2011

Вот примеры использования @JsonIgnore и @JsonIgnoreType для игнорирования определенного свойства или игнорирования всех свойств определенного типа.

import org.codehaus.jackson.annotate.JsonIgnore;
import org.codehaus.jackson.annotate.JsonIgnoreType;
import org.codehaus.jackson.map.ObjectMapper;

public class JacksonIgnoreFieldsDemo
{
  public static void main(String[] args) throws Exception
  {
    ObjectMapper mapper = new ObjectMapper();

    String json1 = mapper.writeValueAsString(new Bar());
    System.out.println(json1); // {"a":"A"}

    // input: {"a":"xyz","b":"B"}
    String json2 = "{\"a\":\"xyz\",\"b\":\"B\"}";
    Bar bar = mapper.readValue(json2, Bar.class);
    System.out.println(bar.a); // xyz
    System.out.println(bar.b); // B

    System.out.println();
    System.out.println(mapper.writeValueAsString(new BarContainer()));
    // output: {"c":"C"}
  }
}

class BarContainer
{
  public Bar bar = new Bar();
  public String c = "C";
}

@JsonIgnoreType
class Bar
{
  public String a = "A";
  @JsonIgnore
  public String b = "B";
}

Дополнительные параметры описаны в моем сообщении в блоге на http://programmerbruce.blogspot.com/2011/07/gson-v-jackson-part-4.html


Обновлено для исправления ошибки копирования-вставки.

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