<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> <version>2.10.2</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-annotations</artifactId> <version>2.10.2</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.10.2</version> </dependency>
注意三者之间的版本
package com.zjhcsoft.bi.nbbq.manager.utils;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.JavaType;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.zjhcsoft.bi.nbbq.manager.entity.User;
import lombok.NonNull;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @ClassName: JacksonUtils
* @Description: 集合 字符串 对象 之间的转换工具类
* @Author: TXW
* @Date: 2022/12/12
*/
public class JacksonUtils {
private static final ObjectMapper mapper = new ObjectMapper();
static {
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
}
public static <T> List<T> jsonToList(@NonNull String jsonString, Class<T> cls) {
try {
return mapper.readValue(jsonString, getCollectionType(cls));
} catch (IOException e) {
throw new RuntimeException(e);
}
}
public static <T> Map jsonToMap(@NonNull String jsonString) {
try {
return mapper.readValue(jsonString, Map.class);
} catch (IOException e) {
throw new RuntimeException(e);
}
}
public static <T> String listToString(List<T> list) {
try {
return mapper.writeValueAsString(list);
} catch (JsonProcessingException e) {
throw new RuntimeException(e);
}
}
public static <T> String mapToString(Map map) {
try {
return mapper.writeValueAsString(map);
} catch (JsonProcessingException e) {
throw new RuntimeException(e);
}
}
/**
* Object对象转List集合
*/
public static <T> List<T> objectToList(@NonNull Object obj, Class<T> cls) {
try {
String s = mapper.writeValueAsString(obj);
return jsonToList(s, cls);
} catch (JsonProcessingException e) {
throw new RuntimeException(e);
}
}
/**
* Object对象转指定对象
*/
public static <T> T objectToMap(@NonNull Object obj, Class<T> cls) {
return mapper.convertValue(obj,cls);
}
/**
* 获取泛型的Collection Type
*
* @param elementClasses 实体bean
* @return JavaType Java类型
*/
private static JavaType getCollectionType(Class<?>... elementClasses) {
return mapper.getTypeFactory().constructParametricType(List.class, elementClasses);
}
public static void main(String[] args) {
List<User> users = new ArrayList<>();
Map<String,String> maps = new HashMap<>();
for (int i = 0; i < 10; i++) {
User user = new User();
user.setUserId(String.valueOf(i));
user.setUserName("用户"+i);
users.add(user);
maps.put(i+"","用户"+i);
}
String s = JacksonUtils.listToString(users);
String mps = JacksonUtils.mapToString(maps);
System.out.println("list----->string:"+s);
System.out.println("map----->string:"+mps);
List<User> users1 = JacksonUtils.jsonToList(s, User.class);
Map map = JacksonUtils.jsonToMap(mps);
System.out.println("string----->list:");
for (User u:users1) {
System.out.println(u.toString());
}
map.forEach((k,v)->{
System.out.println(k+":"+v);
});
}
}