• FastJson中的ObjectMapper对象的使用详解


    写在前面:开发中经常用到json和对象的相互转换,下面将列出FastJson中ObjectMapper对象的API的使用

    一、maven工程中pom导入

    <dependency>
    
        <groupId>com.fasterxml.jackson.core</groupId>
    
        <artifactId>jackson-databind</artifactId>
    
        <version>2.8.3</version>
    
    </dependency>

    二、使用

    1、创建对象

    public static ObjectMapper mapper = new ObjectMapper();

    2、初始化

    static {
        // 转换为格式化的json
        mapper.enable(SerializationFeature.INDENT_OUTPUT);
        // 如果json中有新增的字段并且是实体类类中不存在的,不报错
        mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
        //修改日期格式
        mapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));
    }

    3、对象转为字符串

    String jsonStr = mapper.writeValueAsString(user);
    
    System.out.println("对象转为字符串:" + jsonStr);

    4、对象转为byte数组

    byte[] byteArr = mapper.writeValueAsBytes(user);
    
    System.out.println("对象转为byte数组:" + byteArr);

    5、json字符串转为对象

    ObjectClass obj = mapper.readValue(jsonStr, ObjectClass.class);
    
    System.out.println("json字符串转为对象:" + obj);

    6、byte数组转为对象

    ObjectClass obj = mapper.readValue(byteArr,ObjectClass.class);
    
    System.out.println("byte数组转为对象:" + obj);

    7、集合转为字符串

    String jsonStr = mapper.writeValueAsString(userList);
    
    System.out.println("集合转为字符串:" + jsonStr);

    8、字符串转集合

    List list = null;
    try {
        list = mapper.readValue(jsonStr, List.class);
    } catch (IOException e1) {
        e1.printStackTrace();
    }

    9、Map转为字符串

    String jsonStr = mapper.writeValueAsString(testMap);
    
    System.out.println("Map转为字符串:" + jsonStr);

    10、字符串转Map

    Map map = null;
    try {
        map = mapper.readValue(jsonStr, Map.class);
    } catch (IOException e1) {
        e1.printStackTrace();
    }

    三、JsonUtils工具类

    import com.fasterxml.jackson.core.JsonProcessingException;
    import com.fasterxml.jackson.databind.DeserializationFeature;
    import com.fasterxml.jackson.databind.ObjectMapper;
    import com.fasterxml.jackson.databind.SerializationFeature;
    
    import java.io.IOException;
    import java.text.SimpleDateFormat;
    import java.util.List;
    import java.util.Map;
    
    /**
     * @Author Guixing
     * @Date 2019/1/7 11:10
     * @Description
     */
    public class JsonUtils {
    
        public static ObjectMapper mapper = new ObjectMapper();
    
        static {
            // 转换为格式化的json
            mapper.enable(SerializationFeature.INDENT_OUTPUT);
            // 如果json中有新增的字段并且是实体类类中不存在的,不报错
            mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
            //修改日期格式
            mapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));
        }
    
        /**
         * 对象转为字符串
         *
         * @param obj
         * @return
         */
        public static String Object2Json(Object obj) {
            String jsonStr = null;
            try {
                jsonStr = mapper.writeValueAsString(obj);
            } catch (JsonProcessingException e1) {
                e1.printStackTrace();
            }
            return jsonStr;
        }
    
        /**
         * 对象转为byte数组
         *
         * @param obj
         * @return
         */
        public static byte[] object2ByteArray(Object obj) {
            byte[] byteArr = new byte[0];
            try {
                byteArr = mapper.writeValueAsBytes(obj);
            } catch (JsonProcessingException e1) {
                e1.printStackTrace();
            }
            return byteArr;
        }
    
        /**
         * json字符串转为对象
         *
         * @param jsonStr
         * @param beanType
         * @param <T>
         * @return
         */
        public static <T> T json2Object(String jsonStr, Class<T> beanType) {
            T t = null;
            try {
                t = mapper.readValue(jsonStr, beanType);
            } catch (IOException e1) {
                e1.printStackTrace();
            }
            return t;
        }
    
        /**
         * byte数组转为对象
         *
         * @param byteArr
         * @param beanType
         * @param <T>
         * @return
         */
        public static <T> T byteArr2Object(byte[] byteArr, Class<T> beanType) {
            T t = null;
            try {
                t = mapper.readValue(byteArr, beanType);
            } catch (Exception e) {
                e.printStackTrace();
            }
            return t;
        }
    
        /**
         * 集合转为字符串
         *
         * @param list
         * @return
         */
        public static String list2String(List list) {
            String jsonStr = null;
            try {
                jsonStr = mapper.writeValueAsString(list);
            } catch (JsonProcessingException e1) {
                e1.printStackTrace();
            }
            return jsonStr;
        }
    
        /**
         * 字符串转集合
         *
         * @param jsonStr
         * @return
         */
        public static List json2List(String jsonStr) {
            List list = null;
            try {
                list = mapper.readValue(jsonStr, List.class);
            } catch (IOException e1) {
                e1.printStackTrace();
            }
            return list;
        }
    
        /**
         * Map转为字符串
         *
         * @param map
         * @return
         */
        public static String map2String(Map map) {
            String jsonStr = null;
            try {
                jsonStr = mapper.writeValueAsString(map);
            } catch (JsonProcessingException e1) {
                e1.printStackTrace();
            }
            return jsonStr;
        }
    
        /**
         * 字符串转Map
         *
         * @param jsonStr
         * @return
         */
        public static Map json2Map(String jsonStr) {
            Map map = null;
            try {
                map = mapper.readValue(jsonStr, Map.class);
            } catch (IOException e1) {
                e1.printStackTrace();
            }
            return map;
        }
    
    }
    

  • 相关阅读:
    0:一种过滤机制的MobileMenuList
    MobileMenuImage
    (转)How To Kill runaway processes After Terminating Concurrent Request
    fnd_profile.value('AFLOG_ENABLED')的取值 和配置文件相关SQL
    供应商 银行 SQL (转自ITPUB)
    重启并发管理器
    定义并发请求时 业务实体值集显示没有值数据
    Oracle EBS环境下查找数据源(OAF篇)
    查看在线EBS用户的相关信息
    转,Oracle中关于处理小数点位数的几个函数,取小数位数,Oracle查询函数
  • 原文地址:https://www.cnblogs.com/zhangguixing/p/10858125.html
Copyright © 2020-2023  润新知