JavaWeb - Util 之 JsonUtil

简介: JavaWeb - Util 之 JsonUtil
packagecom.mmall.util;
importcom.google.common.collect.Lists;
importcom.mmall.pojo.Category;
importcom.mmall.pojo.TestPojo;
importcom.mmall.pojo.User;
importlombok.extern.slf4j.Slf4j;
importorg.apache.commons.lang.StringUtils;
importorg.codehaus.jackson.map.DeserializationConfig;
importorg.codehaus.jackson.map.ObjectMapper;
importorg.codehaus.jackson.map.SerializationConfig;
importorg.codehaus.jackson.map.annotate.JsonSerialize.Inclusion;
importorg.codehaus.jackson.type.JavaType;
importorg.codehaus.jackson.type.TypeReference;
importjava.io.IOException;
importjava.text.SimpleDateFormat;
importjava.util.Date;
importjava.util.HashMap;
importjava.util.List;
importjava.util.Map;
@Slf4jpublicclassJsonUtil {
privatestaticObjectMapperobjectMapper=newObjectMapper();
static{
// 对象的所有字段全部列入objectMapper.setSerializationInclusion(Inclusion.ALWAYS);
// 取消默认转换timestamps形式objectMapper.configure(SerializationConfig.Feature.WRITE_DATES_AS_TIMESTAMPS,false);
// 忽略空bean转json的错误objectMapper.configure(SerializationConfig.Feature.FAIL_ON_EMPTY_BEANS,false);
// 所有的日期格式都统一为以下的样式,即yyyy-MM-dd HH:mm:ssobjectMapper.setDateFormat(newSimpleDateFormat(DateTimeUtil.STANDARD_FORMAT));
// 忽略在json字符串中存在,但是在java对象中不存在对应属性的情况,防止错误objectMapper.configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES,false);
    }
publicstatic<T>Stringobj2String(Tobj){
if(obj==null){
returnnull;
        }
try {
returnobjinstanceofString? (String)obj :  objectMapper.writeValueAsString(obj);
        } catch (Exceptione) {
log.warn("Parse Object to String error",e);
returnnull;
        }
    }
publicstatic<T>Stringobj2StringPretty(Tobj){
if(obj==null){
returnnull;
        }
try {
returnobjinstanceofString? (String)obj :  objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(obj);
        } catch (Exceptione) {
log.warn("Parse Object to String error",e);
returnnull;
        }
    }
publicstatic<T>Tstring2Obj(Stringstr,Class<T>clazz){
if(StringUtils.isEmpty(str) ||clazz==null){
returnnull;
        }
try {
returnclazz.equals(String.class)? (T)str : objectMapper.readValue(str,clazz);
        } catch (Exceptione) {
log.warn("Parse String to Object error",e);
returnnull;
        }
    }
publicstatic<T>Tstring2Obj(Stringstr, TypeReference<T>typeReference){
if(StringUtils.isEmpty(str) ||typeReference==null){
returnnull;
        }
try {
return (T)(typeReference.getType().equals(String.class)?str : objectMapper.readValue(str,typeReference));
        } catch (Exceptione) {
log.warn("Parse String to Object error",e);
returnnull;
        }
    }
publicstatic<T>Tstring2Obj(Stringstr,Class<?>collectionClass,Class<?>... elementClasses){
JavaTypejavaType=objectMapper.getTypeFactory().constructParametricType(collectionClass,elementClasses);
try {
returnobjectMapper.readValue(str,javaType);
        } catch (Exceptione) {
log.warn("Parse String to Object error",e);
returnnull;
        }
    }
publicstaticvoidmain(String[] args) {
TestPojotestPojo=newTestPojo();
testPojo.setName("Geely");
testPojo.setId(666);
//{"name":"Geely","id":666}Stringjson="{\"name\":\"Geely\",\"color\":\"blue\",\"id\":666}";
TestPojotestPojoObject=JsonUtil.string2Obj(json,TestPojo.class);
//        String testPojoJson = JsonUtil.obj2String(testPojo);//        log.info("testPojoJson:{}",testPojoJson);log.info("end");
//        User user = new User();//        user.setId(2);//        user.setEmail("geely@happymmall.com");//        user.setCreateTime(new Date());//        String userJsonPretty = JsonUtil.obj2StringPretty(user);//        log.info("userJson:{}",userJsonPretty);//        User u2 = new User();//        u2.setId(2);//        u2.setEmail("geelyu2@happymmall.com");////////        String user1Json = JsonUtil.obj2String(u1);////        String user1JsonPretty = JsonUtil.obj2StringPretty(u1);////        log.info("user1Json:{}",user1Json);////        log.info("user1JsonPretty:{}",user1JsonPretty);//////        User user = JsonUtil.string2Obj(user1Json,User.class);//////        List<User> userList = Lists.newArrayList();//        userList.add(u1);//        userList.add(u2);////        String userListStr = JsonUtil.obj2StringPretty(userList);////        log.info("==================");////        log.info(userListStr);//////        List<User> userListObj1 = JsonUtil.string2Obj(userListStr, new TypeReference<List<User>>() {//        });//////        List<User> userListObj2 = JsonUtil.string2Obj(userListStr,List.class,User.class);System.out.println("end");
    }
}
目录
相关文章
|
3月前
|
JavaScript Java 大数据
基于JavaWeb的销售管理系统设计系统
本系统基于Java、MySQL、Spring Boot与Vue.js技术,构建高效、可扩展的销售管理平台,实现客户、订单、数据可视化等全流程自动化管理,提升企业运营效率与决策能力。
|
5月前
|
SQL 前端开发 Java
JavaWeb 学习日记案例详解及 javaweb 完整项目案例实战指南
本文介绍了一个基于Spring Boot的JavaWeb企业员工管理系统完整案例,涵盖部门管理、员工管理、登录、异常处理、事务管理及AOP等核心功能实现,结合CSDN相关技术文章,提供详细技术方案与应用实例,适合JavaWeb开发者学习与参考。
296 0
|
存储 前端开发 JavaScript
基于JavaWeb实现停车场管理系统
基于JavaWeb实现停车场管理系统
357 1
|
前端开发 JavaScript Java
图书借阅管理平台|基于JavaWeb实现图书借阅系统
图书借阅管理平台|基于JavaWeb实现图书借阅系统
402 1
|
11月前
|
前端开发 Java 数据库连接
【潜意识Java】深度解读JavaWeb开发在Java学习中的重要性
深度解读JavaWeb开发在Java学习中的重要性
229 4
|
前端开发 Java 关系型数据库
JavaWeb开发简介
JavaWeb开发简介
189 0
|
设计模式 Java 关系型数据库
【Java笔记+踩坑汇总】Java基础+JavaWeb+SSM+SpringBoot+SpringCloud+瑞吉外卖/谷粒商城/学成在线+设计模式+面试题汇总+性能调优/架构设计+源码解析
本文是“Java学习路线”专栏的导航文章,目标是为Java初学者和初中高级工程师提供一套完整的Java学习路线。
909 37
|
缓存 前端开发 Java
【Java面试题汇总】Spring,SpringBoot,SpringMVC,Mybatis,JavaWeb篇(2023版)
Soring Boot的起步依赖、启动流程、自动装配、常用的注解、Spring MVC的执行流程、对MVC的理解、RestFull风格、为什么service层要写接口、MyBatis的缓存机制、$和#有什么区别、resultType和resultMap区别、cookie和session的区别是什么?session的工作原理
【Java面试题汇总】Spring,SpringBoot,SpringMVC,Mybatis,JavaWeb篇(2023版)
|
前端开发 Java 应用服务中间件
Javaweb学习
【10月更文挑战第1天】Javaweb学习
128 2
|
安全 Java Android开发
JavaWeb解压缩漏洞之ZipSlip与Zip炸弹
JavaWeb解压缩漏洞之ZipSlip与Zip炸弹
571 5