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

发布于 2024-11-19 02:26:56 字数 221 浏览 2 评论 0原文

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

mapper.writeValueAsString(s);

它工作正常。问题是我不想将所有类变量转换为 JSON。任何人都知道该由谁来做; ObjectMapper 是否有任何函数可以指定不将此类变量转换为 JSON

I am using JSON Jackson to convert from POJOs to JSON. I am using

mapper.writeValueAsString(s);

It is working fine. Problem is I dont't want to convert all class varaibles into JSON. Anyone kno whow to do it; is there any function for ObjectMapper in which we can specify don't convert this class varaible into JSON.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

清泪尽 2024-11-26 02:26:56

使用 @JsonIgnore 注释要忽略的字段 (JavaDoc)。

Annotate fields you want to ignore with @JsonIgnore (JavaDoc).

自演自醉 2024-11-26 02:26:56

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


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

Here are examples of using @JsonIgnore and @JsonIgnoreType to either ignore a specific property or to ignore all properties of a specific type.

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";
}

More options are outlined in my blog post at http://programmerbruce.blogspot.com/2011/07/gson-v-jackson-part-4.html


Updated to correct copy-paste mistake.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文