Android应用开发------------Json工具类(fastJson和Gson的两种工具类)

来源:互联网 发布:统计年鉴数据库官网 编辑:程序博客网 时间:2024/04/29 14:47

博客为 有时个哥 原创,如需转载请标明出处:http://blog.csdn.net/ls703/article/details/41822209

 

json一般是Android中比较常用的与服务器交互的数据形式。我们常用的架包来解析json字符串有fastjson和gson

分别写了两个工具类:

fastJson

import java.util.ArrayList;import java.util.List;import org.json.JSONException;import org.json.JSONObject;import android.text.TextUtils;/** * 解析json字符串和json序列化 * @author song * @param <T> * */public class JSONUtils {/** * 按章节点得到相应的内容 * @param jsonString json字符串 * @param note 节点 * @return 节点对应的内容 */public static String getNoteJson(String jsonString,String note){if(!TextUtils.isEmpty(jsonString)&&!TextUtils.isEmpty(note)){try {JSONObject object = JSONObject.parseObject(jsonString);return object.getString(note);} catch (JSONException e) {e.printStackTrace();}}return null;}/** * 把相对应节点的内容封装为对象 * @param jsonString json字符串 * @param beanClazz  要封装成的目标对象 * @return 目标对象 */public static <T> T parserObject(String jsonString,String note,Class<T> beanClazz){if(jsonString != null){String noteJson = getNoteJson(jsonString, note);T object = JSON.parseObject(noteJson, beanClazz);return object;}return null;}/** * 按照节点得到节点内容,转化为一个数组 * @param jsonString json字符串 * @param beanClazz 集合里存入的数据对象 * @return 含有目标对象的集合 */public static <T> List<T> parserArray(String jsonString,String note,Class<T> beanClazz){if(!TextUtils.isEmpty(jsonString)&&!TextUtils.isEmpty(note)){List<T> objects = new ArrayList<T>();String noteJson = getNoteJson(jsonString, note);if(!TextUtils.isEmpty(noteJson)){objects = JSON.parseArray(noteJson, beanClazz);}else{return null;}return objects;}return null;}/** * 把对象转化为json字符串 * @param obj 要转化的对象 * @return 返回json字符串 */public static String toJsonString(Object obj){if(obj != null){return JSON.toJSONString(obj);}else{throw new RuntimeException("对象不能为空");}}public static <T> T jsonString2Bean(String jsonString ,Class<T> beanClazz){if(jsonString == null){return null;}T object = JSON.parseObject(jsonString, beanClazz);return object;}/** * 把jsonString转化为多个bean对象数组 * @param jsonString * @param beanClazz * @return */public static <T> List<T> jsonString2Beans(String jsonString ,Class<T> beanClazz){if(jsonString == null){return null;}List<T> objects = new ArrayList<T>();objects = JSON.parseArray(jsonString, beanClazz);return objects;}}


Gson的工具类

import java.util.ArrayList;import java.util.List;import android.text.TextUtils;import com.google.gson.Gson;import com.google.gson.JsonArray;import com.google.gson.JsonElement;import com.google.gson.JsonParser;/** * GsonUtils.java * Gson解析json的工具类,用于解析json字符串,或把bean转化为json字符串 * @author LiuSong   * @date 2014-12-9 * @version V1.0 */public class GsonUtils {/** * 按章节点得到相应的内容 * @param jsonString json字符串 * @param note 节点 * @return 节点对应的内容 */public static String getNoteJsonString(String jsonString,String note){if(TextUtils.isEmpty(jsonString)){throw new RuntimeException("json字符串");}if(TextUtils.isEmpty(note)){throw new RuntimeException("note标签不能为空");}JsonElement element = new JsonParser().parse(jsonString);if(element.isJsonNull()){throw new RuntimeException("得到的jsonElement对象为空");}return element.getAsJsonObject().get(note).toString();}/** * 按照节点得到节点内容,然后传化为相对应的bean数组 * @param jsonString 原json字符串 * @param note 节点标签 * @param beanClazz 要转化成的bean class * @return 返回bean的数组 */public static <T> List<T> parserJsonToArrayBeans(String jsonString,String note,Class<T> beanClazz){String noteJsonString = getNoteJsonString(jsonString,note);return parserJsonToArrayBeans(noteJsonString,beanClazz);}/** * 按照节点得到节点内容,转化为一个数组 * @param jsonString json字符串 * @param beanClazz 集合里存入的数据对象 * @return 含有目标对象的集合 */public static <T> List<T> parserJsonToArrayBeans(String jsonString,Class<T> beanClazz){if(TextUtils.isEmpty(jsonString)){throw new RuntimeException("json字符串为空");}JsonElement jsonElement = new JsonParser().parse(jsonString);if(jsonElement.isJsonNull()){throw new RuntimeException("得到的jsonElement对象为空");}if(!jsonElement.isJsonArray()){throw new RuntimeException("json字符不是一个数组对象集合");}JsonArray jsonArray = jsonElement.getAsJsonArray();List<T> beans = new ArrayList<T>();for (JsonElement jsonElement2: jsonArray) {T bean = new Gson().fromJson(jsonElement2, beanClazz);beans.add(bean);}return beans;}/** * 把相对应节点的内容封装为对象 * @param jsonString json字符串 * @param beanClazz  要封装成的目标对象 * @return 目标对象 */public static <T> T parserJsonToArrayBean(String jsonString,Class<T> clazzBean){if(TextUtils.isEmpty(jsonString)){throw new RuntimeException("json字符串为空");}JsonElement jsonElement = new JsonParser().parse(jsonString);if(jsonElement.isJsonNull()){throw new RuntimeException("json字符串为空");}if(!jsonElement.isJsonObject()){throw new RuntimeException("json不是一个对象");}return new Gson().fromJson(jsonElement, clazzBean);}/** * 按照节点得到节点内容,转化为一个数组 * @param jsonString json字符串 * @param note json标签 * @param beanClazz 集合里存入的数据对象 * @return 含有目标对象的集合 */public static <T> T parserJsonToArrayBean(String jsonString,String note,Class<T> clazzBean){String noteJsonString = getNoteJsonString(jsonString, note);return parserJsonToArrayBean(noteJsonString, clazzBean);}/** * 把bean对象转化为json字符串 * @param obj bean对象 * @return 返回的是json字符串 */public static String toJsonString(Object obj){if(obj!=null){return new Gson().toJson(obj);}else{throw new RuntimeException("对象不能为空");}}}



0 0
原创粉丝点击