package com.example.demoboot.util;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
/**
* @author hello
*/
public class JackJsonUtil {
private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper();
/**
* json 数组字符串转java list
*
* @param jsonArray json
* @param typeReference reference
* @param <T> t
* @return list
*/
public static <T> T toJavaList(String jsonArray, TypeReference<T> typeReference) {
T t = null;
try {
t = OBJECT_MAPPER.readValue(jsonArray, typeReference);
} catch (JsonProcessingException e) {
e.printStackTrace();
}
return t;
}
/**
* 解析json字符串为Java 对象
*
* @param object object
* @param tClass Bean 类型
* @param <T> Class
* @return java 对象
*/
public static <T> T toJavaBean(Object object, Class<T> tClass) {
T t = null;
try {
String json = formatJsonString(object);
t = OBJECT_MAPPER.readValue(json, tClass);
} catch (JsonProcessingException e) {
e.printStackTrace();
}
return t;
}
/**
* 将Object对象转化为json string
*
* @param o 任意对象
* @return 字符串
*/
public static String formatJsonString(Object o) {
try {
return OBJECT_MAPPER.writeValueAsString(o);
} catch (JsonProcessingException e) {
e.printStackTrace();
}
return null;
}
}
public class CommonResponseDataDto {
private List<Person> list;
private Person person1;
public List<Person> getList() {
return list;
}
public void setList(List<Person> list) {
this.list = list;
}
public Person getPerson1() {
return person1;
}
public void setPerson1(Person person1) {
this.person1 = person1;
}
}
public static void main(String[] args) {
CommonResponseDataDto commonResponseDataDto = new CommonResponseDataDto();
List<Person> list = new ArrayList<>();
Person person = new Person();
person.setAge(33);
person.setName("王麻子");
list.add(person);
commonResponseDataDto.setList(list);
Person person1 = new Person();
person1.setName("赵六子");
person1.setAge(44);
commonResponseDataDto.setPerson1(person1);
String jsonStr = JackJsonUtil.formatJsonString(commonResponseDataDto);
System.out.println(jsonStr);
Map<String, Object> map = new HashMap<>(1);
map.put("1", commonResponseDataDto);
System.out.println("测试转对象::::::::::::::::::");
CommonResponseDataDto commonResponseDataDto1 = JackJsonUtil.toJavaBean(map.get("1"), CommonResponseDataDto.class);
for (Person datum : commonResponseDataDto1.getList()) {
System.out.println(datum.toString());
}
System.out.println("测试JSONarray::::::::::::::");
String str = "[{\n" +
"\"name\":\"abc\",\n" +
"\"age\":23\n" +
"\n" +
"},{\n" +
"\"name\":\"jin\",\n" +
"\"age\":44\n" +
"}]";
List<Person> peoples = JackJsonUtil.toJavaList(str, new TypeReference<>() {
});
for (Person people : peoples) {
System.out.println(people.toString());
}
}