类 Convert


  • public class Convert
    extends cn.hutool.core.convert.Convert
    类型转换器

    提供简单全面的类型转换,适合更多的业务场景,内置hutool、fastjson、yue三种类型转换器,判断精确性能强大,未知类型兼容性更强

    从以下版本开始:
    2019年7月23日
    作者:
    ylyue
    • 构造器概要

      构造器 
      构造器 说明
      Convert()  
    • 方法概要

      所有方法 静态方法 具体方法 已过时的方法 
      修饰符和类型 方法 说明
      static <T> T convert​(cn.hutool.core.lang.TypeReference<T> reference, Object value)
      转换值为指定类型
      static <T> T convert​(Class<T> type, Object value)
      已过时。
      static <T> T convert​(Class<T> type, Object value, T defaultValue)
      转换值为指定类型
      static <T> T convert​(Object value, Class<T> clazz)
      转换值为指定类型 (推荐)
      static <T> T convert​(Type type, Object value)
      转换值为指定类型
      static <T> T convert​(Type type, Object value, T defaultValue)
      转换值为指定类型
      static <T> T convertByClassName​(String className, Object value)
      转换值为指定类型,类型采用字符串表示
      static <T> T convertQuietly​(Type type, Object value)
      转换值为指定类型,不抛异常转换
      当转换失败时返回null
      static <T> T convertQuietly​(Type type, Object value, T defaultValue)
      转换值为指定类型,不抛异常转换
      当转换失败时返回默认值
      static String toCamelCase​(CharSequence name)
      将下划线方式命名的字符串转换为驼峰式。
      static com.alibaba.fastjson.JSONObject toCamelCase​(Object param)
      属性命名策略转换-驼峰命名法
      static List<com.alibaba.fastjson.JSONObject> toCamelCaseJsonList​(List<com.alibaba.fastjson.JSONObject> list)
      JsonList属性命名策略转换-驼峰命名法
      static <T> List<com.alibaba.fastjson.JSONObject> toCamelCaseJsonListT​(List<T> list)
      JsonList属性命名策略转换-驼峰命名法
      static <T> T toJavaBean​(Object value, Class<T> clazz)
      转换值为指定 POJO 类型
      static com.alibaba.fastjson.JSONArray toJSONArray​(Object value)
      转换为 JSONArray
      static List<com.alibaba.fastjson.JSONObject> toJsonList​(com.alibaba.fastjson.JSONArray jsonArray)
      JSONArray 转 List - JSONObject
      static List<com.alibaba.fastjson.JSONObject> toJsonList​(List<Map<String,​Object>> list)
      List - MapList - JSONObject
      static <T> List<com.alibaba.fastjson.JSONObject> toJsonListT​(List<T> list)
      List - ClassList - JSONObject
      static com.alibaba.fastjson.JSONObject toJSONObject​(Object value)
      转换为 JSONObject
      static com.alibaba.fastjson.JSONObject[] toJsons​(com.alibaba.fastjson.JSONArray jsonArray)
      JSONArray 转 JSONObject[]
      static com.alibaba.fastjson.JSONObject[] toJsons​(String jsonString)
      String 转 JSONObject[]
      static com.alibaba.fastjson.JSONObject[] toJsons​(String text, String regex, String key)
      String 转 JSONObject[] 示例:
      static com.alibaba.fastjson.JSONObject[] toJsons​(List<com.alibaba.fastjson.JSONObject> list)
      List-JSONObject 转 JSONObject[]
      static <T> com.alibaba.fastjson.JSONObject[] toJsonsT​(List<T> list)
      List - Class 转 JSONObject[]
      static <T> com.alibaba.fastjson.JSONObject[] toJsonsTAndRemoveEmpty​(List<T> list)
      List - Class 转 JSONObject[] 并移除空对象
      static <T> List<T> toList​(com.alibaba.fastjson.JSONArray jsonArray, Class<T> clazz)
      JSONArray 转 List-Class
      static <T> List<T> toList​(List<com.alibaba.fastjson.JSONObject> list, Class<T> clazz)
      List-JSONObject 转 List-Class
      static List<String> toList​(List<com.alibaba.fastjson.JSONObject> list, String keepKey)
      List-JSONObject 转 List-String
      static <T> List<T> toList​(List<com.alibaba.fastjson.JSONObject> list, String keepKey, Class<T> clazz)
      List-JSONObject 转 List-Class
      static <T> ArrayList<T> toList​(T[] array)
      数组转List
      static List<String> toListAndDistinct​(List<com.alibaba.fastjson.JSONObject> list, String keepKey)
      List - JSONObject 转 List - String并去除重复元素
      static <T> List<T> toListAndDistinct​(List<com.alibaba.fastjson.JSONObject> list, String keepKey, Class<T> clazz)
      List-JSONObject 转 List-Class并去除重复元素
      static <T> T toObject​(Object value, Class<T> clazz)
      转换值为指定类型
      static com.alibaba.fastjson.JSONObject toPropertyNamingStrategy​(Object param, com.alibaba.fastjson.PropertyNamingStrategy propertyNamingStrategy)
      属性命名策略转换
      static com.alibaba.fastjson.JSONObject toSnakeCase​(Object param)
      属性命名策略转换-下划线命名法
      static List<com.alibaba.fastjson.JSONObject> toSnakeCaseJsonList​(List<com.alibaba.fastjson.JSONObject> list)
      JsonList属性命名策略转换-下划线命名法
      static <T> List<com.alibaba.fastjson.JSONObject> toSnakeCaseJsonListT​(List<T> list)
      JsonList属性命名策略转换-下划线命名法
      static String toSymbolCase​(CharSequence str, char symbol)
      将驼峰式命名的字符串转换为使用符号连接方式。
      static String toUnderlineCase​(CharSequence str)
      将驼峰式命名的字符串转换为下划线方式。
      static com.alibaba.fastjson.JSONObject toUnderlineCase​(Object param)
      属性命名策略转换-下划线命名法
      static List<com.alibaba.fastjson.JSONObject> toUnderlineCaseJsonList​(List<com.alibaba.fastjson.JSONObject> list)
      JsonList属性命名策略转换-下划线命名法
      static <T> List<com.alibaba.fastjson.JSONObject> toUnderlineCaseJsonListT​(List<T> list)
      JsonList属性命名策略转换-下划线命名法
      • 从类继承的方法 cn.hutool.core.convert.Convert

        bytesToInt, bytesToLong, bytesToShort, byteToUnsignedInt, chineseToNumber, convertCharset, convertTime, convertWithCheck, digitToChinese, hexStrToStr, hexToBytes, hexToStr, intToByte, intToBytes, longToBytes, numberToChinese, numberToSimple, numberToWord, shortToBytes, strToUnicode, toBigDecimal, toBigDecimal, toBigInteger, toBigInteger, toBool, toBool, toBooleanArray, toByte, toByte, toByteArray, toChar, toChar, toCharArray, toCollection, toDate, toDate, toDBC, toDBC, toDouble, toDouble, toDoubleArray, toEnum, toEnum, toFloat, toFloat, toFloatArray, toHex, toHex, toInstant, toInt, toInt, toIntArray, toList, toList, toLocalDateTime, toLocalDateTime, toLong, toLong, toLongArray, toMap, toNumber, toNumber, toNumberArray, toPrimitiveByteArray, toSBC, toSBC, toShort, toShort, toShortArray, toStr, toStr, toStrArray, unicodeToStr, unWrap, wrap
    • 构造器详细资料

      • Convert

        public Convert()
    • 方法详细资料

      • convertByClassName

        public static <T> T convertByClassName​(String className,
                                               Object value)
                                        throws cn.hutool.core.convert.ConvertException
        转换值为指定类型,类型采用字符串表示
        类型参数:
        T - 目标类型
        参数:
        className - 类的字符串表示
        value - 值
        返回:
        转换后的值
        抛出:
        cn.hutool.core.convert.ConvertException - 转换器不存在
      • convert

        @Deprecated
        public static <T> T convert​(Class<T> type,
                                    Object value)
                             throws cn.hutool.core.convert.ConvertException
        已过时。
        转换值为指定类型
        类型参数:
        T - 目标类型
        参数:
        type - 类型
        value - 值
        返回:
        转换后的值
        抛出:
        cn.hutool.core.convert.ConvertException - 转换器不存在
      • convert

        public static <T> T convert​(cn.hutool.core.lang.TypeReference<T> reference,
                                    Object value)
                             throws cn.hutool.core.convert.ConvertException
        转换值为指定类型
        类型参数:
        T - 目标类型
        参数:
        reference - 类型参考,用于持有转换后的泛型类型
        value - 值
        返回:
        转换后的值
        抛出:
        cn.hutool.core.convert.ConvertException - 转换器不存在
      • convert

        public static <T> T convert​(Type type,
                                    Object value)
                             throws cn.hutool.core.convert.ConvertException
        转换值为指定类型
        类型参数:
        T - 目标类型
        参数:
        type - 类型
        value - 值
        返回:
        转换后的值
        抛出:
        cn.hutool.core.convert.ConvertException - 转换器不存在
      • convert

        public static <T> T convert​(Class<T> type,
                                    Object value,
                                    T defaultValue)
                             throws cn.hutool.core.convert.ConvertException
        转换值为指定类型
        类型参数:
        T - 目标类型
        参数:
        type - 类型
        value - 值
        defaultValue - 默认值
        返回:
        转换后的值
        抛出:
        cn.hutool.core.convert.ConvertException - 转换器不存在
      • convert

        public static <T> T convert​(Type type,
                                    Object value,
                                    T defaultValue)
                             throws cn.hutool.core.convert.ConvertException
        转换值为指定类型
        类型参数:
        T - 目标类型
        参数:
        type - 类型
        value - 值
        defaultValue - 默认值
        返回:
        转换后的值
        抛出:
        cn.hutool.core.convert.ConvertException - 转换器不存在
      • convertQuietly

        public static <T> T convertQuietly​(Type type,
                                           Object value)
        转换值为指定类型,不抛异常转换
        当转换失败时返回null
        类型参数:
        T - 目标类型
        参数:
        type - 目标类型
        value - 值
        返回:
        转换后的值,转换失败返回null
      • convertQuietly

        public static <T> T convertQuietly​(Type type,
                                           Object value,
                                           T defaultValue)
        转换值为指定类型,不抛异常转换
        当转换失败时返回默认值
        类型参数:
        T - 目标类型
        参数:
        type - 目标类型
        value - 值
        defaultValue - 默认值
        返回:
        转换后的值
      • convert

        public static <T> T convert​(Object value,
                                    Class<T> clazz)
        转换值为指定类型 (推荐)
        类型参数:
        T - 泛型
        参数:
        value - 被转换的值
        clazz - 泛型类型
        返回:
        转换后的对象
        从以下版本开始:
        Greenwich.SR1.2
        另请参阅:
        toObject(Object, Class)
      • toObject

        public static <T> T toObject​(Object value,
                                     Class<T> clazz)
        转换值为指定类型
        类型参数:
        T - 泛型
        参数:
        value - 被转换的值
        clazz - 泛型类型
        返回:
        转换后的对象
      • toJavaBean

        public static <T> T toJavaBean​(Object value,
                                       Class<T> clazz)

        转换值为指定 POJO 类型

        性能测试对比如下:
        1、Spring BeanUtils:性能伯仲,兼容性远超
        2、Cglib BeanCopier:性能伯仲,兼容性远超
        3、Apache BeanUtils:秒杀
        4、Apache PropertyUtils:秒杀
        5、Dozer:秒杀

        类型参数:
        T - 泛型
        参数:
        value - 被转换的值
        clazz - 泛型类型
        返回:
        转换后的POJO
      • toJSONObject

        public static com.alibaba.fastjson.JSONObject toJSONObject​(Object value)
        转换为 JSONObject
        参数:
        value - 被转换的值
        返回:
        JSON
      • toJSONArray

        public static com.alibaba.fastjson.JSONArray toJSONArray​(Object value)
        转换为 JSONArray
        参数:
        value - 被转换的值
        返回:
        JSON数组
      • toList

        public static <T> List<T> toList​(com.alibaba.fastjson.JSONArray jsonArray,
                                         Class<T> clazz)
        JSONArray 转 List-Class
        类型参数:
        T - 泛型
        参数:
        jsonArray - 需要转换的JSONArray
        clazz - json转换的POJO类型
        返回:
        转换后的List
        另请参阅:
        ListUtils.toList(JSONArray, Class)
      • toList

        public static <T> List<T> toList​(List<com.alibaba.fastjson.JSONObject> list,
                                         Class<T> clazz)
        List-JSONObject 转 List-Class
        类型参数:
        T - 泛型
        参数:
        list - 需要转换的List
        clazz - json转换的POJO类型
        返回:
        转换后的List
        另请参阅:
        ListUtils.toList(List, Class)
      • toJsonList

        public static List<com.alibaba.fastjson.JSONObject> toJsonList​(List<Map<String,​Object>> list)
        List - MapList - JSONObject

        性能测试说明:
        测试CPU:i7-4710MQ
        测试结果:百万级数据平均200ms(毫秒)

        参数:
        list - 需要转换的List
        返回:
        转换后的List
        另请参阅:
        ListUtils.toJsonList(List)
      • toJsonList

        public static List<com.alibaba.fastjson.JSONObject> toJsonList​(com.alibaba.fastjson.JSONArray jsonArray)
        JSONArray 转 List - JSONObject

        性能测试报告:
        无类型转换(类型推断):toJsonList(List)
        安全模式强制类型转换:暂未测试

        参数:
        jsonArray - 需要转换的JSONArray
        返回:
        转换后的jsonList
        另请参阅:
        ListUtils.toJsonList(JSONArray)
      • toJsonListT

        public static <T> List<com.alibaba.fastjson.JSONObject> toJsonListT​(List<T> list)
        List - ClassList - JSONObject

        性能测试报告:
        安全模式强制类型转换:暂未测试

        类型参数:
        T - 泛型
        参数:
        list - 需要转换的List
        返回:
        转换后的jsonList
        另请参阅:
        ListUtils.toJsonListT(List)
      • toJsons

        public static com.alibaba.fastjson.JSONObject[] toJsons​(com.alibaba.fastjson.JSONArray jsonArray)
        JSONArray 转 JSONObject[]

        对象引用转换,内存指针依旧指向元数据

        参数:
        jsonArray - 需要转换的JSONArray
        返回:
        转换后的jsons
        另请参阅:
        ListUtils.toJsons(JSONArray)
      • toJsons

        public static com.alibaba.fastjson.JSONObject[] toJsons​(List<com.alibaba.fastjson.JSONObject> list)
        List-JSONObject 转 JSONObject[]

        对象引用转换,内存指针依旧指向元数据

        参数:
        list - 需要转换的List
        返回:
        转换后的jsons
        另请参阅:
        ListUtils.toJsons(List)
      • toJsonsT

        public static <T> com.alibaba.fastjson.JSONObject[] toJsonsT​(List<T> list)
        List - Class 转 JSONObject[]

        性能测试报告:
        安全模式强制类型转换:暂未测试

        类型参数:
        T - 泛型
        参数:
        list - 需要转换的List
        返回:
        转换后的jsons
        另请参阅:
        ListUtils.toJsonsT(List)
      • toJsonsTAndRemoveEmpty

        public static <T> com.alibaba.fastjson.JSONObject[] toJsonsTAndRemoveEmpty​(List<T> list)
        List - Class 转 JSONObject[] 并移除空对象

        性能测试报告:
        安全模式强制类型转换:暂未测试

        类型参数:
        T - 泛型
        参数:
        list - 需要转换的List
        返回:
        转换后的jsons
        另请参阅:
        ListUtils.toJsonsTAndRemoveEmpty(List)
      • toJsons

        public static com.alibaba.fastjson.JSONObject[] toJsons​(String jsonString)
        String 转 JSONObject[]
        参数:
        jsonString - 需要转换的JSON字符串
        返回:
        JSON数组
        另请参阅:
        ListUtils.toJsons(String)
      • toJsons

        public static com.alibaba.fastjson.JSONObject[] toJsons​(String text,
                                                                String regex,
                                                                String key)
        String 转 JSONObject[]
        示例:
                
         		String text = "1,3,5,9";
         		JSONObject[] jsons = toJsons(text, ",", "id");
         		System.out.println(Arrays.toString(jsons));
         
         
        结果: [{"id":"1"}, {"id":"3"}, {"id":"5"}, {"id":"9"}]
        参数:
        text - 需要转换的文本
        regex - 文本分割表达式,同String类的split()方法
        key - JSON的key名称
        返回:
        转换后的jsons
        另请参阅:
        ListUtils.toJsons(String, String, String)
      • toUnderlineCase

        public static String toUnderlineCase​(CharSequence str)
        将驼峰式命名的字符串转换为下划线方式。如果转换前的驼峰式命名的字符串为空,则返回空字符串。
        例如:
         HelloWorld=》hello_world
         Hello_World=》hello_world
         HelloWorld_test=》hello_world_test
         
        参数:
        str - 转换前的驼峰式命名的字符串,也可以为下划线形式
        返回:
        转换后下划线方式命名的字符串
        另请参阅:
        CharSequenceUtil.toUnderlineCase(CharSequence)
      • toSymbolCase

        public static String toSymbolCase​(CharSequence str,
                                          char symbol)
        将驼峰式命名的字符串转换为使用符号连接方式。如果转换前的驼峰式命名的字符串为空,则返回空字符串。
        参数:
        str - 转换前的驼峰式命名的字符串,也可以为符号连接形式
        symbol - 连接符
        返回:
        转换后符号连接方式命名的字符串
        另请参阅:
        CharSequenceUtil.toSymbolCase(CharSequence, char)
      • toCamelCase

        public static String toCamelCase​(CharSequence name)
        将下划线方式命名的字符串转换为驼峰式。如果转换前的下划线大写方式命名的字符串为空,则返回空字符串。
        例如:hello_world=》helloWorld
        参数:
        name - 转换前的下划线大写方式命名的字符串
        返回:
        转换后的驼峰式命名的字符串
        另请参阅:
        CharSequenceUtil.toCamelCase(CharSequence)
      • toCamelCase

        public static com.alibaba.fastjson.JSONObject toCamelCase​(Object param)
        属性命名策略转换-驼峰命名法
        参数:
        param - Json参数 或 POJO对象
        返回:
        经过属性命名策略转换后的 JSONObject
        另请参阅:
        MapUtils.toCamelCase(Object)
      • toUnderlineCase

        public static com.alibaba.fastjson.JSONObject toUnderlineCase​(Object param)
        属性命名策略转换-下划线命名法
        参数:
        param - Json参数 或 POJO对象
        返回:
        经过属性命名策略转换后的 JSONObject
        另请参阅:
        MapUtils.toUnderlineCase(Object)
      • toSnakeCase

        public static com.alibaba.fastjson.JSONObject toSnakeCase​(Object param)
        属性命名策略转换-下划线命名法
        参数:
        param - Json参数 或 POJO对象
        返回:
        经过属性命名策略转换后的 JSONObject
        另请参阅:
        MapUtils.toSnakeCase(Object)
      • toPropertyNamingStrategy

        public static com.alibaba.fastjson.JSONObject toPropertyNamingStrategy​(Object param,
                                                                               com.alibaba.fastjson.PropertyNamingStrategy propertyNamingStrategy)
        属性命名策略转换
        参数:
        param - Json参数 或 POJO对象
        propertyNamingStrategy - 属性命名策略
        返回:
        经过属性命名策略转换后的 JSONObject
        另请参阅:
        MapUtils.toPropertyNamingStrategy(Object, PropertyNamingStrategy)
      • toSnakeCaseJsonList

        public static List<com.alibaba.fastjson.JSONObject> toSnakeCaseJsonList​(List<com.alibaba.fastjson.JSONObject> list)

        JsonList属性命名策略转换-下划线命名法

        参数:
        list - 需要转换的jsonList
        返回:
        转换后的jsonList
      • toSnakeCaseJsonListT

        public static <T> List<com.alibaba.fastjson.JSONObject> toSnakeCaseJsonListT​(List<T> list)

        JsonList属性命名策略转换-下划线命名法

        类型参数:
        T - 泛型
        参数:
        list - 需要转换的List
        返回:
        转换后的jsonList
      • toUnderlineCaseJsonList

        public static List<com.alibaba.fastjson.JSONObject> toUnderlineCaseJsonList​(List<com.alibaba.fastjson.JSONObject> list)

        JsonList属性命名策略转换-下划线命名法

        参数:
        list - 需要转换的jsonList
        返回:
        转换后的jsonList
      • toUnderlineCaseJsonListT

        public static <T> List<com.alibaba.fastjson.JSONObject> toUnderlineCaseJsonListT​(List<T> list)

        JsonList属性命名策略转换-下划线命名法

        类型参数:
        T - 泛型
        参数:
        list - 需要转换的List
        返回:
        转换后的jsonList
      • toCamelCaseJsonList

        public static List<com.alibaba.fastjson.JSONObject> toCamelCaseJsonList​(List<com.alibaba.fastjson.JSONObject> list)

        JsonList属性命名策略转换-驼峰命名法

        参数:
        list - 需要转换的jsonList
        返回:
        转换后的jsonList
      • toCamelCaseJsonListT

        public static <T> List<com.alibaba.fastjson.JSONObject> toCamelCaseJsonListT​(List<T> list)

        JsonList属性命名策略转换-驼峰命名法

        类型参数:
        T - 泛型
        参数:
        list - 需要转换的List
        返回:
        转换后的jsonList