JackSon解析工具
JackSon解析工具
简介:
Jackson库(http://jackson.codehaus.org),是基于Java语言的开源json格式解析工具,整个库(使用最新的2.2版本)包含3个jar包:
- jackson-core.jar——核心包(必须),提供基于“流模式”解析的API。
- jackson-databind——数据绑定包(可选),提供基于“对象绑定”和“树模型”相关API。
- jackson-annotations——注解包(可选),提供注解功能。
优势:
- 功能全面,提供多种模式的json解析方式,“对象绑定”使用方便,利用注解包能为我们开发提供很多便利。
- 性能较高,“流模式”的解析效率超过绝大多数类似的json包。
部分功能:
在实际应用中,用的最多的是数据对象绑定的模式:
1. 将一个Java对象序列化为json字符串;
2. 将一串json字符串反序列化为java对象
3. 将一串json字符串反序列化为Map集合。
---------------------------------------------------------------------
---------- 要提供getter方法
工程结构:
范例1: 将Java对象解析为JackSon字符串[使用writeValueAsString()方法]
Person.java:
package com.atguigu.jsonUtil.bean;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
public class Person {
// Person类的属性
private String userName;
private int age;
private String telephone;
// getter()方法
public String getUserName() {
return userName;
}
public int getAge() {
return age;
}
public String getTelephone() {
return telephone;
}
// 属性的构造方法: 用于实例化属性值
public Person(String userName, int age, String telephone) {
this.userName = userName;
this.age = age;
this.telephone = telephone;
}
// 其他的getter方法
public String getAddress() {
return "BeiJing";
}
public double getSalary() {
return 10000.0;
}
// 测试
public static void main(String[] args) throws JsonProcessingException {
// 准备解析的Java对象
Person person = new Person("Peter", 20, "12345678911");
// 创建JackSon解析工具对象
ObjectMapper mapper = new ObjectMapper();
// 进行解析, 返回JSon字符串
String jsonStr = mapper.writeValueAsString(person);
// 输出JSon字符串
System.out.println(jsonStr);
}
}
输出结果:
{"userName":"Peter","age":20,"telephone":"12345678911","address":"BeiJing","salary":10000.0}
过滤掉某个属性: 只需在该属性的getter方法上添加注解@JsonIgnore即可
@JsonIgnore
public String getTelephone() {
return telephone;
}
输出结果:
{"userName":"Peter","age":20,"address":"BeiJing","salary":10000.0}
Json字符串的key值对应着getter方法的后缀首字母小写:
修改getter方法:
public int getAge_1001() {
return age;
}
输出结果:
{"userName":"Peter","address":"BeiJing","age_1001":20,"salary":10000.0}