1.目的
实现 bean 于jsonString 的转换
2.引入
maven依赖如下
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.10.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-core -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.10.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-annotations -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.10.0</version>
</dependency>
也可自己上maven库,自己搜索有关jackson的三个依赖
3.实体类
1. getter和setter必须有
我这里用的是 lombok 工具代替的, 可自行百度或直接写 getter, setter方法
@Getter
@Setter
class Teacher{
String name;
int age;
public Teacher(String name, int age) {
this.name = name;
this.age = age;
}
//必须要
public Teacher() {
}
@Override
public String toString() {
return name + " " + age ;
}
}
2.默认构造函数必须有
写了自定义的构造器,默认的构造器会被覆盖,这时可以自己再把默认(无参)构造器再写一遍。
4.工具类
package com.ybj.cbt.utils;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.databind.ObjectMapper;
public final class JacksonUtils {
public static ObjectMapper objectMapper;
public static String objectToJsonString(Object object) {
if (objectMapper == null) {
objectMapper = new ObjectMapper();
}
try {
return objectMapper.writeValueAsString(object);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**
* 使用 泛型
* @param jsonStr
* @param valueType
* @param <T>
* @return
*/
public static <T> T stringToObject(String jsonStr, Class<T> valueType) {
if (objectMapper == null) {
objectMapper = new ObjectMapper();
objectMapper.configure(JsonParser.Feature.ALLOW_SINGLE_QUOTES, true);
}
try {
return objectMapper.readValue(jsonStr, valueType);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
5.测试类
package com.ybj.cbt.utils;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.Getter;
import lombok.Setter;
import org.junit.Test;
public class JacksonUtilsTest {
/**
* 对象转String
*/
@Test
public void objectToString(){
Teacher teacher=new Teacher("张三", 11);
// teacher.setName("张三");
// teacher.setAge(11);
String s = JacksonUtils.objectToJsonString(teacher);
System.out.println("s = " + s);
}
/**
* String 转 object
*/
@Test
public void stringToObject() {
String jsonString = "{'name':'张三' , 'age':26}";
ObjectMapper objectMapper = new ObjectMapper();
Teacher teacher=JacksonUtils.stringToObject(jsonString,Teacher.class);
System.out.println("teacher = " + teacher);
}
/**
* jsonString 数组 转 object数组
*/
@Test
public void StringArrayToObjectArray() throws JsonProcessingException {
String jsonString = "[{'name':'张三' , 'age':26},{'name':'李四' , 'age':29}]";
ObjectMapper objectMapper = new ObjectMapper();
Teacher[] teacherList = JacksonUtils.stringToObject(jsonString, Teacher[].class);
for (Teacher teacher : teacherList) {
System.out.println(teacher.toString());
}
}
}
@Getter
@Setter
class Teacher{
String name;
int age;
public Teacher(String name, int age) {
this.name = name;
this.age = age;
}
public Teacher() {
}
@Override
public String toString() {
return name + " " + age ;
}
}