处理Json工具类GsonKit详解编程语言

GsonKit:使用Google的Gson库封装的工具类,专门负责解析Json数据。

使用Maven引入jar包:

<dependency> 
    <groupId>com.google.code.gson</groupId> 
    <artifactId>gson</artifactId> 
    <version>2.4</version> 
</dependency>

以下是代码细节:

public class GsonKit { 
    private static Gson gson = null; 
    static { 
        if (gson == null) { 
            gson = new Gson(); 
        } 
    } 
    /** 
     * 将对象转换成json格式 
     * @param ts 
     * @return 
     */ 
    public static String objectToJson(Object ts) { 
        String jsonStr = null; 
        if (gson != null) { 
            jsonStr = gson.toJson(ts); 
        } 
        return jsonStr; 
    } 
    /** 
     * 将对象转换成json格式(并自定义日期格式) 
     *  
     * @param ts 
     * @return 
     */ 
    public static String objectToJson(Object ts, final String dateformat) { 
        String jsonStr = null; 
        gson = new GsonBuilder().registerTypeHierarchyAdapter(Date.class, new JsonSerializer<Date>() { 
            public JsonElement serialize(Date src, Type typeOfSrc, JsonSerializationContext context) { 
                SimpleDateFormat format = new SimpleDateFormat(dateformat); 
                return new JsonPrimitive(format.format(src)); 
            } 
        }).setDateFormat(dateformat).create(); 
        if (gson != null) { 
            jsonStr = gson.toJson(ts); 
        } 
        return jsonStr; 
    } 
    /** 
     * 将json格式转换成list对象 
     * @param jsonStr 
     * @return 
     */ 
    public static List<?> jsonToList(String jsonStr) { 
        List<?> objList = null; 
        if (gson != null) { 
            java.lang.reflect.Type type = new com.google.gson.reflect.TypeToken<List<?>>() {}.getType(); 
            objList = gson.fromJson(jsonStr, type); 
        } 
        return objList; 
    } 
    /** 
     * 将json格式转换成list对象,并准确指定类型 
     * @param jsonStr 
     * @param type 
     * @return 
     */ 
    public static List<?> jsonToList(String jsonStr, java.lang.reflect.Type type) { 
        List<?> objList = null; 
        if (gson != null) { 
            objList = gson.fromJson(jsonStr, type); 
        } 
        return objList; 
    } 
    /** 
     * 将json格式转换成map对象 
     * @param jsonStr 
     * @return 
     */ 
    public static Map<?, ?> jsonToMap(String jsonStr) { 
        Map<?, ?> objMap = null; 
        if (gson != null) { 
            java.lang.reflect.Type type = new com.google.gson.reflect.TypeToken<Map<?, ?>>() {}.getType(); 
            objMap = gson.fromJson(jsonStr, type); 
        } 
        return objMap; 
    } 
    /** 
     * 将json转换成bean对象 
     * @param jsonStr 
     * @return 
     */ 
    public static Object jsonToBean(String jsonStr, Class<?> cl) { 
        Object obj = null; 
        if (gson != null) { 
            obj = gson.fromJson(jsonStr, cl); 
        } 
        return obj; 
    } 
    /** 
     * 将json转换成bean对象(并自定义日期格式) 
     * @param jsonStr 
     * @param cl 
     * @return 
     */ 
    @SuppressWarnings("unchecked") 
    public static <T> T jsonToBean(String jsonStr, Class<T> cl, final String pattern) { 
        Object obj = null; 
        gson = new GsonBuilder().registerTypeAdapter(Date.class, new JsonDeserializer<Date>() { 
            public Date deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) 
                    throws JsonParseException { 
                SimpleDateFormat format = new SimpleDateFormat(pattern); 
                String dateStr = json.getAsString(); 
                try { 
                    return format.parse(dateStr); 
                } catch (ParseException e) { 
                    e.printStackTrace(); 
                } 
                return null; 
            } 
        }).setDateFormat(pattern).create(); 
        if (gson != null) { 
            obj = gson.fromJson(jsonStr, cl); 
        } 
        return (T) obj; 
    } 
     
    /** 
     * 将json转换成bean对象(并自定义日期格式) 
     * @param jsonReader 
     * @param cl 
     * @return 
     */ 
    @SuppressWarnings("unchecked") 
    public static <T> T jsonToBean(Reader jsonReader, Class<T> cl, final String pattern) { 
        Object obj = null; 
        gson = new GsonBuilder().registerTypeAdapter(Date.class, new JsonDeserializer<Date>() { 
            public Date deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) 
                    throws JsonParseException { 
                SimpleDateFormat format = new SimpleDateFormat(pattern); 
                String dateStr = json.getAsString(); 
                try { 
                    return format.parse(dateStr); 
                } catch (ParseException e) { 
                    e.printStackTrace(); 
                } 
                return null; 
            } 
        }).setDateFormat(pattern).create(); 
        if (gson != null) { 
            obj = gson.fromJson(jsonReader, cl); 
        } 
        return (T) obj; 
    } 
    /** 
     * 根据key获得value值 
     * @param jsonStr 
     * @param key 
     * @return 
     */ 
    public static Object getJsonValue(String jsonStr, String key) { 
        Object rulsObj = null; 
        Map<?, ?> rulsMap = jsonToMap(jsonStr); 
        if (rulsMap != null && rulsMap.size() > 0) { 
            rulsObj = rulsMap.get(key); 
        } 
        return rulsObj; 
    } 
}

原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/10482.html

(0)
上一篇 2021年7月19日 10:18
下一篇 2021年7月19日 10:18

相关推荐

发表回复

登录后才能评论