package com.banzhuan.accountservice.util;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.core.JsonParseException;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.JavaType;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @description json工具类,依赖jackson
* @author linyoulong
* @version V1.0
*/
public class JacksonUtil {
private static Logger logger = LoggerFactory.getLogger(JacksonUtil.class);
private static ObjectMapper INSTANCE = new ObjectMapper();
private JacksonUtil() {}
/**
* @param obj 准备转换对象
* @return
* @description 对象转换成json字符串
* @version V1.0
*/
public static String toJsonStr(Object obj) {
try {
return INSTANCE.writeValueAsString(obj);
} catch (JsonProcessingException e) {
logger.error("toJsonStr error:",e);
}
return null;
}
/**
* javaBean、列表数组转换为json字符串,忽略空值
*/
public static String toJsonStrIgnoreNull(Object obj) throws Exception {
ObjectMapper mapper = new ObjectMapper();
mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
return mapper.writeValueAsString(obj);
}
/**
* @param json 准备转换json
* @param type 转换类型
* @return
* @throws Exception 转换异常
* @description json字符串转换成对象
*/
@SuppressWarnings("unchecked")
public static <T> T json2pojo(String json, String type) {
try {
return (T) json2pojo(json, Class.forName(type));
} catch (ClassNotFoundException e) {
logger.error("json2pojo error:",e);
} catch (Exception e) {
logger.error("json2pojo error:",e);
}
return null;
}
/**
* @param json 准备转换json
* @param clazz 转换类型
* @return
* @description json字符串转换成对象
*/
public static <T> T json2pojo(String json, Class<T> clazz) {
try {
return (T) INSTANCE.readValue(json, clazz);
} catch (JsonParseException e) {
logger.error("json2pojo error:",e);
} catch (JsonMappingException e) {
logger.error("json2pojo error:",e);
} catch (IOException e) {
logger.error("json2pojo error:",e);
}
return null;
}
/**
* @param json 准备转换json
* @param clazz 转换类型
* @return
* @description json字符串转换成对象,当遇到没有的字段,则忽略
*/
public static <T> T json2pojoCompatible(String json, Class<T> clazz) {
try {
ObjectMapper mapper = new ObjectMapper();
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES,false);
return (T) mapper.readValue(json, clazz);
} catch (JsonParseException e) {
logger.error("json2pojoCompatible error:",e);
} catch (JsonMappingException e) {
logger.error("json2pojoCompatible error:",e);
} catch (IOException e) {
logger.error("json2pojoCompatible error:",e);
}
return null;
}
/**
* @param json 准备转换json
* @param type 转换类型
* @return
* @description json字符串转换成对象,当遇到没有的字段,则忽略
*/
public static <T> T json2pojoCompatible(String json, TypeReference<T> type) {
try {
ObjectMapper mapper = new ObjectMapper();
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES,false);
return (T) mapper.readValue(json, type);
} catch (JsonParseException e) {
logger.error("json2pojoCompatible error:",e);
} catch (JsonMappingException e) {
logger.error("json2pojoCompatible error:",e);
} catch (IOException e) {
logger.error("json2pojoCompatible error:",e);
}
return null;
}
/**
* json字符串转换为map
*/
public static <T> Map<String, Object> json2map(String jsonString) throws Exception {
ObjectMapper mapper = new ObjectMapper();
mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
return mapper.readValue(jsonString, Map.class);
}
/**
* json字符串转换为map
*/
public static <T> Map<String, T> json2map(String jsonString, Class<T> clazz) throws Exception {
Map<String, Map<String, Object>> map = INSTANCE.readValue(jsonString, new TypeReference<Map<String, T>>() {
});
Map<String, T> result = new HashMap<>();
for (Map.Entry<String, Map<String, Object>> entry : map.entrySet()) {
result.put(entry.getKey(), map2pojo(entry.getValue(), clazz));
}
return result;
}
/**
* 深度转换json成map
*
* @param json
* @return
*/
public static Map<String, Object> json2mapDeeply(String json) throws Exception {
return json2MapRecursion(json, INSTANCE);
}
/**
* 把json解析成list,如果list内部的元素存在jsonString,继续解析
*
* @param json
* @param mapper 解析工具
* @return
* @throws Exception
*/
private static List<Object> json2ListRecursion(String json, ObjectMapper mapper) throws Exception {
if (json == null) {
return null;
}
List<Object> list = mapper.readValue(json, List.class);
for (Object obj : list) {
if (obj != null && obj instanceof String) {
String str = (String) obj;
if (str.startsWith("[")) {
obj = json2ListRecursion(str, mapper);
} else if (obj.toString().startsWith("{")) {
obj = json2MapRecursion(str, mapper);
}
}
}
return list;
}
/**
* 把json解析成map,如果map内部的value存在jsonString,继续解析
*
* @param json
* @param mapper
* @return
* @throws Exception
*/
private static Map<String, Object> json2MapRecursion(String json, ObjectMapper mapper) throws Exception {
if (json == null) {
return null;
}
Map<String, Object> map = mapper.readValue(json, Map.class);
for (Map.Entry<String, Object> entry : map.entrySet()) {
Object obj = entry.getValue();
if (obj != null && obj instanceof String) {
String str = ((String) obj);
if (str.startsWith("[")) {
List<?> list = json2ListRecursion(str, mapper);
map.put(entry.getKey(), list);
} else if (str.startsWith("{")) {
Map<String, Object> mapRecursion = json2MapRecursion(str, mapper);
map.put(entry.getKey(), mapRecursion);
}
}
}
return map;
}
/**
* @param json 准备转换json
* @param clazz 集合元素类型
* @return
* @description json字符串转换成对象集合
*/
@SuppressWarnings("unchecked")
public static <T> List<T> parseJsonList(String json, Class<T> clazz) {
try {
JavaType javaType = getCollectionType(ArrayList.class, clazz);
return (List<T>) INSTANCE.readValue(json, javaType);
} catch (IOException e) {
logger.error("parseJsonList error:",e);
}
return null;
}
/*
没有合适的资源?快使用搜索试试~ 我知道了~
java毕业设计 基于SpringCloud+Vue宿舍报修系统+数据库源码+详细文档+全部资料(优秀项目)
共127个文件
java:70个
yml:12个
xml:7个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
1 下载量 153 浏览量
2024-04-16
14:06:59
上传
评论 2
收藏 388KB ZIP 举报
温馨提示
【资源说明】 java毕业设计 基于SpringCloud+Vue宿舍报修系统+数据库源码+详细文档+全部资料(优秀项目)java毕业设计 基于SpringCloud+Vue宿舍报修系统+数据库源码+详细文档+全部资料(优秀项目) 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如软件工程、计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载使用,也可作为毕设项目、课程设计、作业、项目初期立项演示等,当然也适合小白学习进阶。 3、如果基础还行,可以在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 欢迎下载,沟通交流,互相学习,共同进步!
资源推荐
资源详情
资源评论
收起资源包目录
java毕业设计 基于SpringCloud+Vue宿舍报修系统+数据库源码+详细文档+全部资料(优秀项目) (127个子文件)
mvnw.cmd 6KB
mvnw.cmd 6KB
mvnw.cmd 6KB
mvnw.cmd 6KB
mvnw.cmd 6KB
mvnw.cmd 6KB
mvnw.cmd 6KB
.gitignore 303B
.gitignore 303B
.gitignore 303B
.gitignore 303B
.gitignore 303B
.gitignore 303B
.gitignore 303B
maven-wrapper.jar 47KB
maven-wrapper.jar 47KB
maven-wrapper.jar 47KB
maven-wrapper.jar 47KB
maven-wrapper.jar 47KB
maven-wrapper.jar 47KB
JacksonUtil.java 9KB
JacksonUtil.java 9KB
JacksonUtil.java 9KB
MavenWrapperDownloader.java 5KB
MavenWrapperDownloader.java 5KB
MavenWrapperDownloader.java 5KB
MavenWrapperDownloader.java 5KB
MavenWrapperDownloader.java 5KB
MavenWrapperDownloader.java 5KB
RepairServiceImpl.java 4KB
RepairController.java 4KB
PermissionFilter.java 3KB
CodeServiceImpl.java 3KB
AccountController.java 2KB
PasswordUtil.java 2KB
TencentSmsSender.java 2KB
AdminController.java 2KB
RepairManController.java 2KB
CodeService.java 2KB
RepairDao.java 1KB
Repair.java 1KB
AddressController.java 1KB
AdminServiceImpl.java 1KB
RepairManServiceImpl.java 1KB
AddressCache.java 971B
Result.java 957B
Result.java 957B
Result.java 956B
CommentController.java 941B
RepairService.java 870B
HmaCUtil.java 859B
HmaCUtil.java 859B
AccountServiceImpl.java 851B
SecurityConfig.java 803B
AddressServiceImpl.java 708B
CommentServiceImpl.java 695B
CodeMsg.java 671B
AccountServiceApplication.java 611B
CodeMsg.java 572B
CodeMsg.java 564B
RepairServiceApplicationTests.java 524B
RepairExceptionHandler.java 513B
GatewayApplication.java 508B
BankendServiceApplication.java 507B
User.java 502B
ConfigApplication.java 472B
TimeUtil.java 449B
AddressService.java 449B
RepairMan.java 436B
RepairServiceApplication.java 421B
RegistryApplication.java 413B
Admin.java 379B
BankendServiceApplicationTests.java 352B
Comment.java 346B
Address.java 343B
RegistryApplicationTests.java 340B
GatewayApplicationTests.java 338B
RepairManService.java 329B
JwtPlayload.java 303B
CommentDao.java 281B
AdminDao.java 268B
AddressService.java 257B
RepairManDao.java 250B
AccountDao.java 239B
AddressDao.java 235B
AdminService.java 226B
CommentService.java 221B
AccountService.java 202B
RepairStaticDto.java 193B
Address.java 186B
guohanghuang.cn.jks 6KB
hs_err_pid2176.log 8KB
接口.md 12KB
mvnw 9KB
mvnw 9KB
mvnw 9KB
mvnw 9KB
mvnw 9KB
mvnw 9KB
mvnw 9KB
共 127 条
- 1
- 2
资源评论
不走小道
- 粉丝: 3224
- 资源: 5113
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功