GsonUtil 工具类 1.0.1

package com.jfai.kg.util;


import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import java.util.TreeMap;
import java.util.regex.Pattern;


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.JsonParser;
import com.google.gson.JsonSyntaxException;


/** 
  * @ClassName: GsonUtil.java 
  * @Package com.jf.util
  * @author wanglf
  * @Description: TODO(这里用一句话描述这个类的作用) 
  * @date 2018年6月7日 下午5:58:40 
  * @version 1.0.0
  * @remarket   替换了默认的gson对象,消除神奇的/u003d 转义问题 2018年7月1日12:00:59
  * 略微增强了GsonUtil的功能
  */
public final class GsonUtil {
public static final Gson gson = new GsonBuilder().disableHtmlEscaping().create();


private GsonUtil() {
}


/** 
* key value String Object 对象转换成 相应的map json字符串 
* @param obj  
* @return  
*/
public static String toJson(String key, Object obj) {
try {
Map<String, Object> map = new HashMap<String, Object>();
map.put(key, obj);
return gson.toJson(map);
} catch (Exception e) {
e.printStackTrace();


}
return null;
}


/** 
* json字符串转成对象 
* @param str   
* @param type 
* @return  
*/
public static Object fromJsonToObject(String str, Type type) {
try {
return gson.fromJson(str, type);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}


/** 
* json字符串转成对象 
* @param str   
* @param type  
* @return  
*/
@SuppressWarnings("unchecked")
public static Object fromJsonToObject(String str, Class type) {
try {
return gson.fromJson(str, type);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}


/**
* 验证一个字符串是否是合法的JSON串

* @param input
*            要验证的字符串
* @return true-合法 ,false-非法
*/
// public static boolean isJSON(String json) {
// return false;
// }


/**
* json转List
* */
// private void test(){
// String json = "";
// String result = new Gson().fromJson(json,new TypeToken<List<Object>>()
// {}.getType());//转换为集合
// }


private static Map<String, Object> jsonMap = new HashMap<String, Object>();


/** 
* 获取JsonObject 
* @param json 
* @return 
*/
public static JsonObject parseJson(String json) {
JsonParser parser = new JsonParser();
JsonObject jsonObj = parser.parse(json).getAsJsonObject();
return jsonObj;
}


/**
* 获取json节点数据
* @param element
* @param json
* @return
*/
public static String getString(String element, String json) {
JsonParser parser = new JsonParser();
String re = "";
try {
re = parser.parse(json).getAsJsonObject().get(element).getAsString();
} catch (JsonSyntaxException e) {
return "";
}


return re;
}


/**
* 依据key,获取jsonObject数据
* @param jsonObject
* @param element
* @return
*/
public static String getString(String element, JsonObject jsonObject) {
String re = "";
try {
re = jsonObject.get(element).getAsString();
} catch (JsonSyntaxException e) {
return "";
}
return re;
}


/**
* 依据key,获取jsonObject数据
* @param jsonObject
* @param element
* @return
*/
public static Integer getInteger(String element, JsonObject jsonObject) {
Integer i = null;
try {
i = jsonObject.get(element).getAsInt();
} catch (JsonSyntaxException e) {
}
return i;
}




/** 
* 根据json字符串返回Map对象 
* @param json 
* @return 
*/
public static Map<String, Object> toMap(String json) {
return GsonUtil.toMap(GsonUtil.parseJson(json));
}


/**
* 按照key值的ASCII大小升序排列
* @param json
* @return
*/
public static Map<String, Object> JsonOrderByAscii(String json) {
return GsonUtil.JsonOrderByAscii(GsonUtil.parseJson(json));
}


/** 
* 解析json字符串,并按照key值的ASCII码大小排序
* @param json 
* @return 
*/
public static Map<String, Object> JsonOrderByAscii(JsonObject json) {
Map<String, Object> map = new TreeMap<String, Object>();
Set<Entry<String, JsonElement>> entrySet = json.entrySet();
for (Iterator<Entry<String, JsonElement>> iter = entrySet.iterator(); iter.hasNext();) {
Entry<String, JsonElement> entry = iter.next();
String key = entry.getKey();
JsonElement value = entry.getValue();
if (value instanceof JsonArray) {
map.put((String) key, toList((JsonArray) value));
} else if (value instanceof JsonObject) {
map.put((String) key, JsonOrderByAscii((JsonObject) value));
} else {
if (value.toString().indexOf("\"") > -1) {
map.put((String) key, value.getAsString());
} else {
map.put((String) key, value);
}
}
}
return map;
}


/**
* 将JSONObjec对象转换成Map-List集合 
* @param json
* @return
*/
public static Map<String, Object> toMap(JsonObject json) {
Set<Entry<String, JsonElement>> entrySet = json.entrySet();
for (Iterator<Entry<String, JsonElement>> iter = entrySet.iterator(); iter.hasNext();) {
Entry<String, JsonElement> entry = iter.next();
String key = entry.getKey();
JsonElement value = entry.getValue();
if (value instanceof JsonArray) {
tojsonList((JsonArray) value);
} else if (value instanceof JsonObject) {
toMap((JsonObject) value);
} else {
if (value.toString().indexOf("\"") > -1) {
jsonMap.put((String) key, value.getAsString());
} else {
jsonMap.put((String) key, value);
}
}
}
String data = "{'page_no':'1','page_size':'100','code':'1234','status':'1','begin_date':'2014-11-11 10:00:00','end_date':'2014-11-28 16:31:00'}";
return jsonMap;
}


/** 
* 将JSONArray对象转换成List集合 
* @param json 
* @return 
*/
public static List<Object> toList(JsonArray json) {
List<Object> list = new ArrayList<Object>();
for (int i = 0; i < json.size(); i++) {
Object value = json.get(i);
if (value instanceof JsonArray) {
list.add(toList((JsonArray) value));
} else if (value instanceof JsonObject) {
list.add(JsonOrderByAscii((JsonObject) value));
} else {
list.add(value);
}
}
return list;
}


/** 
* 将JSONArray对象转换成List集合 
* @param json 
* @return 
*/
public static List<Object> tojsonList(JsonArray json) {
List<Object> list = new ArrayList<Object>();
for (int i = 0; i < json.size(); i++) {
Object value = json.get(i);
if (value instanceof JsonArray) {
tojsonList((JsonArray) value);
} else if (value instanceof JsonObject) {
toMap((JsonObject) value);
}
}
return list;
}


/*
* 将字符串转换成JsonArray
*/
public static JsonArray toJsonArray(String str) {
// 创建一个JsonParser
JsonParser parser = new JsonParser();


// 通过JsonParser对象可以把json格式的字符串解析成一个JsonElement对象
JsonElement el = parser.parse(str);


// 把JsonElement对象转换成JsonArray
JsonArray jsonArray = null;
if (el.isJsonArray()) {
jsonArray = el.getAsJsonArray();
}
return jsonArray;
}


/** 
* 对象转换成json字符串 
* @param obj  
* @return  
*/
public static String toJson(Object obj) {
return gson.toJson(obj);
}


/**
* 反序列化对象

* @param json
* @param clazz
* @return
*/
public static <T> T fromJson(String json, Class<T> clazz) {
return gson.fromJson(json, clazz);
}


/**
* 反序列化对象

* @param json
* @param clazz
* @return
*/
public static Object fromJson(String json, Type type) {
return gson.fromJson(json, type);
}


/**
* 校验是否为get方式提交的参数

* @param paras
* @return
*/
public static boolean validateModel(String paras) {
return Pattern.compile("\\w*[^&=]*=\\w*[^&=]*&?").matcher(paras).find();
}


/**

* @param key
* @param JsonObject
* @return
* @Description: 判断JsonObject中是否含有该key
*/
public static boolean containsKey(String key, JsonObject JsonObject) {
return JsonObject.get(key) == null ? false : true;
};


public static void main(String[] args) {



}
}

猜你喜欢

转载自blog.csdn.net/u014793936/article/details/80897090
今日推荐