`
yihengvip
  • 浏览: 19654 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Jackson Annotations 基本用法

阅读更多

Jackson Annotations 基本用法

一、重命名属性

public class Name {
  @JsonProperty("firstName")
  public String _first_name;
}

 结果是:

{ "firstName" : "Bob" }

 二、忽略属性

public class Value {
  public int value1;
  @JsonIgnore 
  public int value2;
}

 结果是:

{ "value1" : 42 }

 ①当由json字符串反序列化成pojo时,如果想忽略json字符串中的某些属性这样处理:

@JsonIgnoreProperties({ "extra", "uselessValue" })
public class Value {
  public int value;
}

 这样就可以把下面的json字符串反序列化成 Value 对象:

{ "value" : 42, "extra" : "fluffy", "uselessValue" : -13 }

 ②若反序列化时要忽略所有pojo中不存在的属性可以这样:

@JsonIgnoreProperties(ignoreUnknown=true)
public class PojoWithAny {
  public int value;
}

 三、指定属性类型

有时候属性的类型并不是你想要的,比如以下情况:

  • 反序列化的时候,声明的类型是一个通用类型,但是你知道应该对应哪个具体的实现类。
  • 序列化时,你可能不需要一个类的全部属性,只是想要它的父类的属性。

这样处理就可以了:

public class ValueContainer {
  // 尽管这个属性是 Value 类型,
  // 但是你想在反序列化时将json字符串读取成ValueImpl 类型
  @JsonDeserialize(as=ValueImpl.class)
  public Value value;

  // 如果你将BasicType的子类AdvancedType的一个对象赋值给这个属性
  // 但是你又想按照BasicType类型来序列化
  //(默认是按照属性的运行时类型,即AdvancedType序列化)

  @JsonSerialize(as=BasicType.class)
  // 或者用 @JsonSerialize(typing=Typing.STATIC)
  public BasicType another;
}

 四、使用构造器或工厂方法

①Jackson默认使用无参的默认构造器来创建实例,但是也可以使用其他构造器或者静态的工厂方法来创建实例。

public class CtorPOJO {
   private final int _x, _y;

   @JsonCreator
   public CtorPOJO(@JsonProperty("x") int x, @JsonProperty("y") int y) {
      _x = x;
      _y = y;
   }
}

 ②静态的工厂方法也是同样的用法。但是还有一个被称作“委托”的另类用法:

public class DelegatingPOJO {
   private final int _x, _y;

   @JsonCreator
   public DelegatingPOJO(Map<String,Object> delegate) {
      _x = (Integer) delegate.get("x");
      _y = (Integer) delegate.get("y");
   }
}

 这种用法只能有一个参数,而且不能带@JsonProperty注解。

五、修改属性自动检测

Jackson默认的属性检测规则是这样的:

  • 所有的 public 类型的属性
  • 所有的 public 类型的 get 方法
  • 所有的 set 方法(无论方法的可见性)

如果默认规则不能满足需求,可以用@JsonAutoDetect注解来改变。

①比如想要自动检测到所有属性(无论该属性的可见性)

@JsonAutoDetect(fieldVisibility=JsonAutoDetect.Visibility.ANY)
public class POJOWithFields {
  private int value;
}

 ②想要跳过所有方法

@JsonAutoDetect(getterVisibility=JsonAutoDetect.Visibility.NONE)
public class POJOWithNoMethod {

}

 ③两个加在一起就是只检测属性不检测方法了(鄙人就是为了这个才去读了官方文档的)

 

@JsonAutoDetect(fieldVisibility=JsonAutoDetect.Visibility.ANY, getterVisibility=JsonAutoDetect.Visibility.NONE)
public class POJOWithOnlyField {

}

 

基本使用就这些了。英文原文看这里:原文地址。Jackson全部注解看这里:Jackson注解大全

 

分享到:
评论

相关推荐

    jackson-annotations-2.11.4-API文档-中文版.zip

    赠送jar包:jackson-annotations-2.11.4.jar;...使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。

    jackson-annotations-2.9.0-API文档-中文版.zip

    赠送jar包:jackson-annotations-2.9.0.jar;...使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。

    jackson-annotations-2.13.1-API文档-中文版.zip

    赠送jar包:jackson-annotations-2.13.1.jar;...使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。

    jackson-annotations、jackson-core、jackson-databind

    2. **jackson-core**:这是Jackson库的基础模块,提供了基本的JSON解析和生成功能。它包括了JSON流API,可以读取和写出JSON流,以及`JsonParser`和`JsonGenerator`两个主要类,分别用于解析JSON输入和生成JSON输出。...

    jackson-annotations-2.2.3.jar(Jackson解析需引入的包)

    `jackson-annotations-2.2.3.jar`需要被添加到Java项目的类路径中,以便在运行时能够访问其中的类和方法。 在实际开发中,为了使用Jackson进行JSON处理,你需要将这个jar文件和其他Jackson的依赖加入到项目中。对于...

    jackson-annotations-2.13.1-API文档-中英对照版.zip

    使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。 双语对照,边学技术、边学英语。

    jackson-annotations-2.2.3.jar.zip

    Jackson是Java领域中广泛使用的JSON处理库,由FasterXML公司开发并维护。"jackson-annotations-2.2.3.jar.zip" 是一个包含Jackson注解库的压缩文件,版本为2.2.3。这个库是Jackson框架的重要组成部分,主要用于在...

    jackson-annotations-2.10.2-API文档-中英对照版.zip

    使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。 双语对照,边学技术、边学英语。

    jackson-annotations-2.12.3-API文档-中英对照版.zip

    使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。 双语对照,边学技术、边学英语。

    jackson-annotations-2.2.3-API文档-中文版.zip

    赠送jar包:jackson-annotations-2.2.3.jar;...使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。

    jackson-annotations-2.12.5-API文档-中文版.zip

    赠送jar包:jackson-annotations-2.12.5.jar;...使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。

    jackson-annotations-2.9.7-API文档-中英对照版.zip

    使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。 双语对照,边学技术、边学英语。

    jackson-annotations-2.9.5.jar ,jackson-core-2.9.5.jar,jackson-databind-2.9.5.jar

    2. **jackson-core-2.9.5.jar**:这是Jackson的基础核心模块,包含了基本的JSON解析和生成功能。它提供了解析器(`JsonParser`)和生成器(`JsonGenerator`)接口,用于读写JSON数据。这个模块不依赖任何第三方库,...

    jackson-annotations-2.12.3-API文档-中文版.zip

    赠送jar包:jackson-annotations-2.12.3.jar;...使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。

    jackson-annotations-2.10.2-API文档-中文版.zip

    赠送jar包:jackson-annotations-2.10.2.jar;...使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。

    jackson-annotations-2.10.0-API文档-中文版.zip

    赠送jar包:jackson-annotations-2.10.0.jar;...使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。

    jackson-annotations-2.10.5-API文档-中英对照版.zip

    使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。 双语对照,边学技术、边学英语。

    jackson-annotations-2.12.2-API文档-中英对照版.zip

    使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。 双语对照,边学技术、边学英语。

    jackson-annotations-2.7.0-API文档-中英对照版.zip

    使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。 双语对照,边学技术、边学英语。

    jackson-annotations-2.9.0-API文档-中英对照版.zip

    使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。 双语对照,边学技术、边学英语。

Global site tag (gtag.js) - Google Analytics