JackSon工具类
一、简介
Jackson 是当前用的比较广泛的,用来序列化和反序列化 json 的 Java 的开源框架。
Jackson 的核心模块由三部分组成:
- jackson-core,核心包,提供基于"流模式"解析的相关 API,它包括 JsonPaser 和 JsonGenerator
- jackson-annotations,注解包,提供标准注解功能
- jackson-databind ,数据绑定包, 提供基于"对象绑定" 解析的相关 API ( ObjectMapper ) 和"树模型" 解析的相关 API (JsonNode);基于"对象绑定" 解析的 API 和"树模型"解析的 API 依赖基于"流模式"解析的 API
二、依赖
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.9.6</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.9.6</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.6</version>
</dependency>
jackson-databind 依赖 jackson-core 和 jackson-annotations,所以可以只显示地添加jackson-databind依赖,jackson-core 和 jackson-annotations 也随之添加到 Java 项目工程中。
三、具体使用
1、json 别名注解 @JsonProperty
适用场景:Java属性名与需要转换的JSON字符串不一致的场景
java bean:
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class TestJsonBean {
@JsonProperty(value = "test_name")
private String name;
@JsonProperty(value = "bean_number")
private Integer beanNumber;
@JsonProperty(value = "bean_account")
private Double beanAccount;
}
Test 测试:
package com.jackson.example;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.junit.jupiter.api.Test;
import java.io.IOException;
public class TestJackson {
@Test
public void test1() {
ObjectMapper objectMapper = new ObjectMapper();
TestJsonBean bean = new TestJsonBean();
bean.setBeanAccount(2.53);
bean.setBeanNumber(15);
bean.setName("测试JSON");
try {
String result = objectMapper.writeValueAsString(bean);
System.out.println(result);
} catch (Exception e) {
e.printStackTrace();
}
}
}
打印结果:
{"test_name":"测试JSON","bean_number":15,"bean_account":2.53}