您的位置:首页 > 移动开发 > Android开发

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

2014-12-09 12:17 676 查看
博客为 有时个哥 原创,如需转载请标明出处:/article/11171958.html

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("对象不能为空");
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: