使用Jackson JSON时,如何控制序列化的实例变量

时间:2011-07-07 16:03:59

标签: java json jackson

我正在使用JSON Jackson从POJO转换为JSON。我正在使用

mapper.writeValueAsString(s);

工作正常。问题是我不想将所有类变量转换为JSON。任何人都知道如何做;是否有ObjectMapper的任何函数,我们可以在其中指定不要将此类转换为JSON

2 个答案:

答案 0 :(得分:3)

使用@JsonIgnoreJavaDoc)注释要忽略的字段。

答案 1 :(得分:1)

以下是使用@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

中列出了更多选项

更新以更正复制粘贴错误。