美文网首页
Android Fastjson 工具类

Android Fastjson 工具类

作者: afkT | 来源:发表于2020-01-26 22:27 被阅读0次

    DevUtils Github

    方法 注释
    toJson 将对象转换为 JSON String
    fromJson 将 JSON String 映射为指定类型对象
    isJSON 判断字符串是否 JSON 格式
    isJSONObject 判断字符串是否 JSON Object 格式
    isJSONArray 判断字符串是否 JSON Array 格式
    toJsonIndent JSON String 缩进处理
    getArrayType 获取 Array Type
    getListType 获取 List Type
    getSetType 获取 Set Type
    getMapType 获取 Map Type
    getType 获取 Type
    package dev.other;
    
    import com.alibaba.fastjson.JSON;
    import com.alibaba.fastjson.JSONArray;
    import com.alibaba.fastjson.JSONObject;
    import com.alibaba.fastjson.parser.Feature;
    import com.alibaba.fastjson.util.ParameterizedTypeImpl;
    
    import java.lang.reflect.GenericArrayType;
    import java.lang.reflect.Type;
    import java.util.List;
    import java.util.Map;
    import java.util.Set;
    
    import dev.utils.JCLogUtils;
    
    /**
     * detail: Fastjson 工具类
     * @author Ttt
     */
    public final class FastjsonUtils {
    
        private FastjsonUtils() {
        }
    
        // 日志 TAG
        private static final String TAG = FastjsonUtils.class.getSimpleName();
    
        // ============
        // = 转换方法 =
        // ============
    
        /**
         * 将对象转换为 JSON String
         * @param object {@link Object}
         * @return JSON String
         */
        public static String toJson(final Object object) {
            if (object != null) {
                try {
                    return JSON.toJSONString(object);
                } catch (Exception e) {
                    JCLogUtils.eTag(TAG, e, "toJson");
                }
            }
            return null;
        }
    
        // =
    
        /**
         * 将 JSON String 映射为指定类型对象
         * @param json     JSON String
         * @param classOfT {@link Class} T
         * @param <T>      泛型
         * @return instance of type
         */
        public static <T> T fromJson(final String json, final Class<T> classOfT) {
            if (json != null) {
                try {
                    return JSON.parseObject(json, classOfT);
                } catch (Exception e) {
                    JCLogUtils.eTag(TAG, e, "fromJson");
                }
            }
            return null;
        }
    
        // =
    
        /**
         * 将 JSON String 映射为指定类型对象
         * @param json    JSON String
         * @param typeOfT {@link Type} T
         * @param <T>     泛型
         * @return instance of type
         */
        public static <T> T fromJson(final String json, final Type typeOfT) {
            if (json != null) {
                try {
                    return JSON.parseObject(json, typeOfT);
                } catch (Exception e) {
                    JCLogUtils.eTag(TAG, e, "fromJson");
                }
            }
            return null;
        }
    
        // ============
        // = 其他方法 =
        // ============
    
        /**
         * 判断字符串是否 JSON 格式
         * @param json 待校验 JSON String
         * @return {@code true} yes, {@code false} no
         */
        public static boolean isJSON(final String json) {
            try {
                Object object = JSON.parse(json);
                return (object != null);
            } catch (Exception e) {
                return false;
            }
        }
    
        /**
         * 判断字符串是否 JSON Object 格式
         * @param json 待校验 JSON String
         * @return {@code true} yes, {@code false} no
         */
        public static boolean isJSONObject(final String json) {
            try {
                Object object = JSON.parse(json);
                return (object instanceof JSONObject);
            } catch (Exception e) {
            }
            return false;
        }
    
        /**
         * 判断字符串是否 JSON Array 格式
         * @param json 待校验 JSON String
         * @return {@code true} yes, {@code false} no
         */
        public static boolean isJSONArray(final String json) {
            try {
                Object object = JSON.parse(json);
                return (object instanceof JSONArray);
            } catch (Exception e) {
            }
            return false;
        }
    
        // =
    
        /**
         * JSON String 缩进处理
         * @param json JSON String
         * @return JSON String
         */
        public static String toJsonIndent(final String json) {
            if (json != null) {
                try {
                    // 保持 JSON 字符串次序
                    Object object = JSON.parse(json, Feature.OrderedField);
                    if (object instanceof JSONObject) {
                        return JSONObject.toJSONString(object, true);
                    } else if (object instanceof JSONArray) {
                        return JSONArray.toJSONString(object, true);
                    }
                } catch (Exception e) {
                    JCLogUtils.eTag(TAG, e, "toJsonIndent");
                }
            }
            return null;
        }
    
        /**
         * Object 转 JSON String 并进行缩进处理
         * @param object {@link Object}
         * @return JSON String
         */
        public static String toJsonIndent(final Object object) {
            if (object != null) {
                try {
                    return toJsonIndent(toJson(object));
                } catch (Exception e) {
                    JCLogUtils.eTag(TAG, e, "toJsonIndent");
                }
            }
            return null;
        }
    
        // ========
        // = Type =
        // ========
    
        /**
         * 获取 Array Type
         * @param type Bean.class
         * @return Bean[] Type
         */
        public static Type getArrayType(final Type type) {
            return new GenericArrayType() {
                @Override
                public Type getGenericComponentType() {
                    return type;
                }
            };
        }
    
        /**
         * 获取 List Type
         * @param type Bean.class
         * @return List<Bean> Type
         */
        public static Type getListType(final Type type) {
            return new ParameterizedTypeImpl(new Type[]{type}, null, List.class);
        }
    
        /**
         * 获取 Set Type
         * @param type Bean.class
         * @return Set<Bean> Type
         */
        public static Type getSetType(final Type type) {
            return new ParameterizedTypeImpl(new Type[]{type}, null, Set.class);
        }
    
        /**
         * 获取 Map Type
         * @param keyType   Key.class
         * @param valueType Value.class
         * @return Map<Key, Value> Type
         */
        public static Type getMapType(final Type keyType, final Type valueType) {
            return new ParameterizedTypeImpl(new Type[]{keyType, valueType}, null, Map.class);
        }
    
        /**
         * 获取 Type
         * @param rawType       raw type
         * @param typeArguments type arguments
         * @return Type
         */
        public static Type getType(final Type rawType, final Type... typeArguments) {
            return new ParameterizedTypeImpl(typeArguments, null, rawType);
        }
    }
    

    相关文章

      网友评论

          本文标题:Android Fastjson 工具类

          本文链接:https://www.haomeiwen.com/subject/skrsthtx.html