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注解大全。
相关推荐
赠送jar包:jackson-annotations-2.11.4.jar;...使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。
赠送jar包:jackson-annotations-2.9.0.jar;...使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。
赠送jar包:jackson-annotations-2.13.1.jar;...使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。
2. **jackson-core**:这是Jackson库的基础模块,提供了基本的JSON解析和生成功能。它包括了JSON流API,可以读取和写出JSON流,以及`JsonParser`和`JsonGenerator`两个主要类,分别用于解析JSON输入和生成JSON输出。...
`jackson-annotations-2.2.3.jar`需要被添加到Java项目的类路径中,以便在运行时能够访问其中的类和方法。 在实际开发中,为了使用Jackson进行JSON处理,你需要将这个jar文件和其他Jackson的依赖加入到项目中。对于...
使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。 双语对照,边学技术、边学英语。
Jackson是Java领域中广泛使用的JSON处理库,由FasterXML公司开发并维护。"jackson-annotations-2.2.3.jar.zip" 是一个包含Jackson注解库的压缩文件,版本为2.2.3。这个库是Jackson框架的重要组成部分,主要用于在...
使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。 双语对照,边学技术、边学英语。
使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。 双语对照,边学技术、边学英语。
赠送jar包:jackson-annotations-2.2.3.jar;...使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。
赠送jar包:jackson-annotations-2.12.5.jar;...使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。
使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。 双语对照,边学技术、边学英语。
2. **jackson-core-2.9.5.jar**:这是Jackson的基础核心模块,包含了基本的JSON解析和生成功能。它提供了解析器(`JsonParser`)和生成器(`JsonGenerator`)接口,用于读写JSON数据。这个模块不依赖任何第三方库,...
赠送jar包:jackson-annotations-2.12.3.jar;...使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。
赠送jar包:jackson-annotations-2.10.2.jar;...使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。
赠送jar包:jackson-annotations-2.10.0.jar;...使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。
使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。 双语对照,边学技术、边学英语。
使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。 双语对照,边学技术、边学英语。
使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。 双语对照,边学技术、边学英语。
使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。 双语对照,边学技术、边学英语。