代码已经整理好,效果如下:

Json.Utils:import com.google.gson.Gson;

import com.google.gson.GsonBuilder;

import com.google.gson.JsonArray;

import com.google.gson.JsonElement;

import com.google.gson.JsonObject;

import com.google.gson.JsonParseException;

import com.google.gson.JsonParser;

import com.haiersmart.utilslib.data.StringUtil;

import org.json.JSONArray;

import org.json.JSONException;

import org.json.JSONObject;

import java.util.ArrayList;

import java.util.List;

public class JsonUtils {

/** 获取Gson实例 **/

private static Gson getInstance() {

GsonBuilder gsonBuilder = new GsonBuilder();

gsonBuilder.setDateFormat("yyyy-MM-dd HH:mm:ss");

gsonBuilder.registerTypeAdapter(Object.class, new NaturalDeserializer());

Gson gson = gsonBuilder.create();

return gson;

}

/**

* 解析集合

*

* @param json

*            数据

* @param beanClass

*            泛型

* @return 泛型集合

*/

public static  List getBeanList(String json, Class beanClass) {

return getBeanList(json, null, beanClass);

}

/**

* 解析集合

*

* @param json

* @param key

*            json数据key

* @param beanClass

*            泛型

* @return 泛型集合

*/

public static  List getBeanList(String json, String key, Class beanClass) {

JsonParser parser = new JsonParser();

Gson gson = getInstance();

JsonElement contentElement = null;

List elementList = new ArrayList();

//    try {

//       @SuppressWarnings("unused")

//       JSONObject object = new JSONObject(json);

//    } catch (JSONException e1) {

//       return elementList;

//    }

if (StringUtil.isBlank(key) || StringUtil.isBlank(json)) {

contentElement = parser.parse(json).getAsJsonArray();

} else {

JsonObject jsonObject = parser.parse(json).getAsJsonObject();

contentElement = jsonObject.get(key);

}

if (StringUtil.isBlank(contentElement))

return elementList;

if (contentElement.isJsonArray()) {

JsonArray jsonArray = contentElement.getAsJsonArray();

try {

for (int i = 0; i 

JsonElement jsonObj = jsonArray.get(i);

T entity = gson.fromJson(jsonObj, beanClass);

elementList.add(entity);

}

} catch (ClassCastException e) {

} catch (JsonParseException e) {

}

return elementList;

}

return elementList;

}

/**

* 解析单个bean

*

* @param json

* @param clazz

* @return 泛型

*/

public static  T getBean(String json, final Class clazz) {

return getBean(json, null, clazz);

}

/**

* 解析单个bean

*

* @param json

* @param key

*            解析的json数据key

* @param clazz

* @return 泛型

*/

@SuppressWarnings("unchecked")

public static  T getBean(String json, String key, final Class clazz) {

JsonParser parser = new JsonParser();

Gson gson = getInstance();

JsonElement contentElement = null;

try {

@SuppressWarnings("unused")

JSONObject object = new JSONObject(json);

} catch (JSONException e1) {

return null;

}

if (StringUtil.isBlank(key)) {

contentElement = parser.parse(json).getAsJsonObject();

} else {

JsonObject jsonObject = parser.parse(json).getAsJsonObject();

contentElement = jsonObject.get(key);

}

if (StringUtil.isBlank(contentElement))

return null;

if (contentElement.isJsonPrimitive()) {

if (clazz == String.class) {

return (T) contentElement.getAsString();

} else if (clazz == Integer.class) {

return (T) Integer.valueOf(contentElement.getAsString());

} else if (clazz == Number.class) {

return (T) contentElement.getAsNumber();

}

} else if (contentElement.isJsonObject()) {

JsonObject contentObj = contentElement.getAsJsonObject();

T content = null;

try {

content = gson.fromJson(contentObj, clazz);

} catch (ClassCastException e) {

} catch (JsonParseException e) {

System.out.println(e.getStackTrace().toString());

}

return content;

}

return null;

}

/**

* 根据key 解析相关字段

*

* @param json

* @param key

* @return

*/

public static Object getObjectByKey(String json, String key, String targetkey) {

JsonParser parser = new JsonParser();

JsonElement jsonElement;

try {

JsonObject jsonObject = parser.parse(json).getAsJsonObject();

jsonElement = jsonObject.get(key);

return jsonElement.getAsJsonObject().get(targetkey).toString();

} catch (Exception e) {

return null;

}

}

/** JSONObject生成Json字符串 **/

public static String getJSONStringByJSONObject(JSONObject jsonobject) {

String s;

if (jsonobject == null)

s = "";

else

s = jsonobject.toString();

return s;

}

/** 解析JSONObject Json字符串 **/

public static JSONObject getJSONObjectByJSONString(String str) {

str = str.replace("\ufeff", "");

JSONObject jsonobject;

if (str != null)

try {

jsonobject = new JSONObject(str);

} catch (JSONException _ex) {

jsonobject = null;

}

else

jsonobject = null;

return jsonobject;

}

/** 解析JSONArray Json字符串 **/

public static JSONArray getJSONArrayByJSONString(String str) {

JSONArray jsonarray;

if (str != null)

try {

jsonarray = new JSONArray(str);

} catch (JSONException _ex) {

jsonarray = null;

}

else

jsonarray = null;

return jsonarray;

}

}

总结:现在的项目都是fastjson和Gson一起的,大家需要自己封装好util方便调用~

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐