Android应用开发------------Json工具类(fastJson和Gson的两种工具类)
2014-12-09 12:17
676 查看
博客为 有时个哥 原创,如需转载请标明出处:/article/11171958.html
json一般是Android中比较常用的与服务器交互的数据形式。我们常用的架包来解析json字符串有fastjson和gson
分别写了两个工具类:
fastJson
Gson的工具类
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("对象不能为空"); } } }
相关文章推荐
- 【Android开发经验】超好用的json解析工具——Gson项目使用详解
- 【Android 应用开发】 FastJson 使用详解
- Android应用之——谷歌官方Json解析工具Gson的使用
- Android开发常用-Json(GSON)自动生成实体类工具 2.0
- Android进阶笔记14:3种JSON解析工具(org.json、fastjson、gson)
- 【Android 应用开发】 FastJson 使用详解
- Android开发常用-Json(GSON)自动生成实体类工具
- 【Android 应用开发】 FastJson 使用详解
- 【Android开发经验】超好用的json解析工具——Gson项目使用详解
- 【Android开发经验】超好用的json解析工具——Gson项目使用详解
- 【Android 应用开发】 FastJson 使用具体解释
- 【Android 应用开发】 FastJson 使用详解
- Android中的应用——谷歌官方Json分析工具Gson使用
- Android 常用开发工具类之 AppVersionUtil (获取应用版本信息工具)
- Android学习(二):解析JSON,GSON,FASTJSON;JDBC编程
- android与JAVAEE结合开发的关键代码(json与xml两种方法)
- Android应用开发实用小工具
- Android中使用Gson解析JSON数据的两种方法
- Android 应用开发实用工具和注意点
- Android 应用开发 之通过AsyncTask与ThreadPool(线程池)两种方式异步加载大量数据的分析与对比