安卓GSON使用详解

安卓GSON使用的一点经验:

public class JsonUtils {

    /********************************************json的反序列化********************************************/
    /**************************json数组字符串转成对象数组**********************************/
    public static <T> List<T> fromJsonArray(String jsonArrayStr, Class<T> clazz) {
        JsonArray array = new JsonParser().parse(jsonArrayStr).getAsJsonArray();
        return getTs(array, clazz);
    }


    private static <T> List<T> getTs(JsonArray array, Class<T> tClass) {
        List<T> lst = new ArrayList<>();
        for (final JsonElement elem : array) {
            lst.add(new Gson().fromJson(elem, tClass));
        }
        return lst;
    }


    /**************************json数组字符串转成对象数组**********************************/


    /***********************************json字符串转成对象**************************************************/
    //json转成JsonObject
    public static JsonObject fromJson(String json) {
        JsonElement parse = new JsonParser().parse(json);
        return parse.getAsJsonObject();
    }


    //json字符串转成对象
    public static <T> T fromJson(String json, Class<T> tClass) {
        return new Gson().fromJson(json, tClass);
    }


    //取出json字符串中的字段值,这个值不是json数组(java.lang.UnsupportedOperationException: JsonObject)


    /*****************************************json字符串中取字段值*******************************************************/


    /*********json字段值是字符串***********/
    public static String getStrFromJsonObj(JsonObject obj, String key) {
        JsonElement element = obj.get(key);
        return element.getAsString();
    }




    public static String getStrfromJson(String json, String key) {
        return getStrFromJsonObj(fromJson(json), key);
    }
    /*********json字段值是字符串***********/


    /*********json字段值是json***********/
    public static String getJsonStrfromJson(String json, String key) {
        return fromJson(json).getAsJsonObject(key).toString();
    }


    /**
     * @return 对象
     */
    public static <T> T getJsonfromJson(String json, String key, Class<T> tClass) {
        JsonElement element = fromJson(json).get(key);
//        LogUtils.d("json对象----------------------------》" + element.toString());
        return new Gson().fromJson(element, tClass);
    }
    /*********json字段值是json***********/


    /********************json字段值是json数组**************************/
    //取出json字符串中的字段值,这个值不是json数组


    /**
     * @return json数组字符串
     */
    public static String getJsonArrayStrfromJson(String json, String key) {
        return fromJson(json).getAsJsonArray(key).toString();
    }


    /**
     * @return 对象数组
     */
    public static <T> List<T> getJsonArrayfromJson(String json, String key, Class<T> tClass) {
        return getTs(fromJson(json).getAsJsonArray(key), tClass);
    }
    /********************json字段值是json数组**************************/


    /*****************************************json字符串中取字段值*******************************************************/


    /********************************************json的反序列化********************************************/




    /********************************************json的序列化********************************************/


    //对象转成JsonObject
    public static <T extends Object> JsonObject fromObj(T t) {
        return fromJson(toJson(t, t.getClass()));
    }


    /**
     * Map转成json
     *
     * @param map
     * @return
     */
    public static String toJson(Map<String, String> map) {
        if (map == null || map.size() == 0) {
            return null;
        }


        StringBuilder paras = new StringBuilder();
        paras.append("{");
        Iterator<Map.Entry<String, String>> ite = map.entrySet().iterator();
        while (ite.hasNext()) {
            Map.Entry<String, String> entry = (Map.Entry<String, String>) ite.next();
            paras.append("\"").append(entry.getKey()).append("\":\"").append(entry.getValue()).append("\"");
            if (ite.hasNext()) {
                paras.append(",");
            }
        }
        paras.append("}");
        return paras.toString();
    }


    //键值对生成json
    public static String toJson(String key, String value) {
        String s = null;
        try {
            s = new JSONObject().put(key, value).toString();
        } catch (JSONException e) {
            e.printStackTrace();
        }
        return s;
    }


    /**
     * @param key_values {key,value}
     */
    /*public static String key_valuesToJson(String[]... key_values) {
        JSONObject jsonObject = new JSONObject();
        for (String[] key_value : key_values) {
            try {
                jsonObject.put(key_value[0], key_value[1]);
            } catch (JSONException e) {
                e.printStackTrace();
            }
        }
        return jsonObject.toString();
    }*/


    /**
     * @param key_values {key,value}
     */
    public static String key_valuesToJson(String[]... key_values) {
        Map<String, String> stringStringMap = new HashMap<>();
        for (String[] key_value : key_values) {
            stringStringMap.put(key_value[0], key_value[1]);
        }


        return objectToJson(stringStringMap);
    }


    //对象转成json字符串
    public static <T> String toJson(T t, Class<? extends Object> tClass) {
        return new Gson().toJson(t, tClass);
    }


    /**
     * 最牛逼的方法,可以将Object类型的对象转成json字符串
     * 1、javabean对象转成json字符串
     * 2、javabean对象数组转成json数组
     */
    public static String objectToJson(Object object) {
        return new Gson().toJson(object);
    }


    public static String updateJsonField(String json, String key, String value) {
        try {
            JSONObject jsonObject = new JSONObject(json);
            json = jsonObject.put(key, value).toString();
            return json;
        } catch (JSONException e) {
            e.printStackTrace();
        }
        return null;
    }


    /********************************************json的序列化********************************************/


    public static boolean hasJsonField(String json, String key) {
        JsonElement parse = new JsonParser().parse(json);
        JsonObject asJsonObject = parse.getAsJsonObject();
        return asJsonObject.has(key);
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值