java處理json工具類 涵括大多半方法
阿新 • • 發佈:2018-12-21
json處理工具類 用到的全部寫進去了 特此記錄
package com.zhiyinlou.flow.common.util; import java.beans.IntrospectionException; import java.beans.Introspector; import java.beans.PropertyDescriptor; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.UnsupportedEncodingException; import java.net.MalformedURLException; import java.net.URL; import java.net.URLConnection; import java.util.*; import net.sf.json.JSONArray; import net.sf.json.JSONObject; import net.sf.json.JsonConfig; import net.sf.json.util.CycleDetectionStrategy; /** * * JSON工具類 * @ClassName: JsonUtil * @author * @date 2018年9月20日 */ public class JsonUtil { /** * 將Json轉化成物件 * @param jsonString Json串 * @param pojoCalss 要轉化成的物件 * @return */ public static Object getObject4JsonString(String jsonString, Class pojoCalss) { JSONObject jsonObject = JSONObject.fromObject(jsonString); Object pojo = JSONObject.toBean(jsonObject, pojoCalss); return pojo; } /** * 根據key 獲取string的值 * @param jsonString * @param key * @return */ public static String getString4JsonString(String jsonString,String key){ JSONObject jsonObject = JSONObject.fromObject(jsonString); return jsonObject.getString(key); } /** * 將Json轉化成map * @param jsonString Json串 * @return */ public static Map getMap4Json(String jsonString) { JSONObject jsonObject = JSONObject.fromObject(jsonString); Iterator keyIter = jsonObject.keys(); Map valueMap = new HashMap(); while (keyIter.hasNext()) { String key = (String) keyIter.next(); Object value = jsonObject.get(key); valueMap.put(key, value); } return valueMap; } /** * 將Json轉化成object陣列 * @param jsonString * @return */ public static Object[] getObjectArray4Json(String jsonString) { JSONArray jsonArray = JSONArray.fromObject(jsonString); return jsonArray.toArray(); } /** * 將Json轉化成List * @param jsonString Json串 * @param pojoClass 要轉化的物件 * @return */ public static List getList4Json(String jsonString, Class pojoClass) { JSONArray jsonArray = JSONArray.fromObject(jsonString); List list = new ArrayList(); for (int i = 0; i < jsonArray.size(); ++i) { JSONObject jsonObject = jsonArray.getJSONObject(i); Object pojoValue = JSONObject.toBean(jsonObject, pojoClass); list.add(pojoValue); } return list; } /** * 將Json轉化成String陣列 * @param jsonString Json串 * @return */ public static String[] getStringArray4Json(String jsonString) { JSONArray jsonArray = JSONArray.fromObject(jsonString); String[] stringArray = new String[jsonArray.size()]; for (int i = 0; i < jsonArray.size(); ++i) { stringArray[i] = jsonArray.getString(i); } return stringArray; } /** * 將內容為Long的json串轉化成Long[] * @param jsonString json串 * @return */ public static Long[] getLongArray4Json(String jsonString) { JSONArray jsonArray = JSONArray.fromObject(jsonString); Long[] longArray = new Long[jsonArray.size()]; for (int i = 0; i < jsonArray.size(); ++i) { longArray[i] = Long.valueOf(jsonArray.getLong(i)); } return longArray; } /** * 將內容為Integeer的json串轉化成Integer[] * @param jsonString json串 * @return */ public static Integer[] getIntegerArray4Json(String jsonString) { JSONArray jsonArray = JSONArray.fromObject(jsonString); Integer[] integerArray = new Integer[jsonArray.size()]; for (int i = 0; i < jsonArray.size(); ++i) { integerArray[i] = Integer.valueOf(jsonArray.getInt(i)); } return integerArray; } /** * 將內容為Double的json串轉化成Double[] * @param jsonString json串 * @return */ public static Double[] getDoubleArray4Json(String jsonString) { JSONArray jsonArray = JSONArray.fromObject(jsonString); Double[] doubleArray = new Double[jsonArray.size()]; for (int i = 0; i < jsonArray.size(); ++i) { doubleArray[i] = Double.valueOf(jsonArray.getDouble(i)); } return doubleArray; } /** * 將object轉化成json串 * @param javaObj object物件 * @return */ public static String getJsonString4JavaPOJO(Object javaObj) { JSONObject json = JSONObject.fromObject(javaObj); return json.toString(); } /** * 將object轉化成json串 * @param javaObj object物件要格式化的日期格式 * @param dataFormat * @return */ public static String getJsonString4JavaPOJO(Object javaObj, String dataFormat) { JsonConfig jsonConfig = configJson(dataFormat); JSONObject json = JSONObject.fromObject(javaObj, jsonConfig); return json.toString(); } /** * 將List轉化成json * @param list * @return */ public static String getJsonString4List(List list){ String json=""; if(list!=null){ JSONArray jsonArray = JSONArray.fromObject(list); } return json; } /** * 將List轉化成json * @param list * @param dataFormat 日期格式 * @return */ public static String getJsonString4List(List list,String dataFormat){ String json=""; if(list!=null){ JsonConfig jsonConfig = configJson(dataFormat); JSONArray jsonArray = JSONArray.fromObject(list,jsonConfig); } return json; } private static String getURL(String sUrl, String sXML) { String msg = ""; try { URL url = new URL(sUrl); URLConnection connection = url.openConnection(); connection.setDoOutput(true); OutputStreamWriter out = new OutputStreamWriter(connection .getOutputStream(), "utf-8"); out.write("dataxml=" + sXML); out.flush(); out.close(); BufferedReader in = new BufferedReader(new InputStreamReader( connection.getInputStream(), "utf-8")); String line = null; StringBuffer content = new StringBuffer(); while ((line = in.readLine()) != null) { content.append(line); } in.close(); in = null; url = null; msg = content.toString(); } catch (MalformedURLException e) { e.printStackTrace(); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return msg; } public static String getResultString(String jsonString) { String result = jsonString.split("result\":\"")[1]; result = result.split("\",\"")[0]; return result; } public static String getModify(String sUrl, String sXML) { String jsonString = getURL(sUrl, sXML); return getResultString(jsonString); } public static List getQuery(Class pojoClass, String sUrl, String sXML) { String jsonString = getURL(sUrl, sXML); jsonString = jsonString.split("]")[0] + "]"; jsonString = "[" + jsonString.split("\\[")[1]; return getList4Json(jsonString, pojoClass); } public static JsonConfig configJson(String datePattern) { JsonConfig jsonConfig = new JsonConfig(); jsonConfig.setExcludes(new String[] { "" }); jsonConfig.setIgnoreDefaultExcludes(false); jsonConfig.setCycleDetectionStrategy(CycleDetectionStrategy.LENIENT); jsonConfig.registerJsonValueProcessor(Date.class, new DateJsonValueProcessor(datePattern)); return jsonConfig; } public static JsonConfig configJson(String[] excludes, String datePattern) { JsonConfig jsonConfig = new JsonConfig(); jsonConfig.setExcludes(excludes); jsonConfig.setIgnoreDefaultExcludes(false); jsonConfig.setCycleDetectionStrategy(CycleDetectionStrategy.LENIENT); jsonConfig.registerJsonValueProcessor(Date.class, new DateJsonValueProcessor(datePattern)); return jsonConfig; } /** * <p> * Title: objectToJson * </p> * <p> * Description:物件轉換成JSON * </p> * * @param object * @return */ public static String objectToJson(Object object) { StringBuilder json = new StringBuilder(); if (object == null) { json.append("\"\""); } else if (object instanceof String || object instanceof Integer || object instanceof Short || object instanceof Date || object instanceof Float || object instanceof Double) { json.append("\"").append(object.toString()).append("\""); } else if(object instanceof Map){ json.append(mapToJson((Map<String,Object>)object)); } else if (object instanceof List<?>) { json.append(listToJson((List<?>) object)); } else if(object instanceof Object[]){ json.append(arrayToJson((Object[])object)); }else{ json.append(beanToJson(object)); } if (json.toString().equals("}")) { return "\"\""; } return json.toString(); } public static String arrayToJson(Object object[]){ StringBuilder json = new StringBuilder(); json.append("["); for(int i=0;i<object.length;i++){ Object o = object[i]; if(i==0){ json.append("\"").append(o).append("\""); }else{ json.append(",").append("\"").append(o).append("\""); } } json.append("]"); return json.toString(); } /** * * <p> * Title: beanToJson * </p> * <p> * Description: * </p> * * @param bean * @return */ public static String beanToJson(Object bean) { StringBuilder json = new StringBuilder(); json.append("{"); PropertyDescriptor[] props = null; try { props = Introspector.getBeanInfo(bean.getClass(), Object.class) .getPropertyDescriptors(); } catch (IntrospectionException e) { e.printStackTrace(); } if (props != null) { for (int i = 0; i < props.length; i++) { try { String name = objectToJson(props[i].getName()); String value = objectToJson(props[i].getReadMethod() .invoke(bean)); json.append(name); json.append(":"); json.append(value); json.append(","); } catch (Exception e) { e.printStackTrace(); } } json.setCharAt(json.length() - 1, '}'); } else { json.append("}"); } return json.toString(); } /** * * <p> * Title: listToJson * </p> * <p> * Description:List轉換成JSON * </p> * * @param list * @return */ public static String listToJson(List<?> list) { StringBuilder json = new StringBuilder(); json.append("{\"items\":["); if (list != null && list.size() > 0) { for (Object obj : list) { json.append(objectToJson(obj)); json.append(","); } json.setCharAt(json.length() - 1, ']'); } else { json.append("]"); } json.append("}"); return json.toString(); } /** * * <p> * Title: mapToJson * </p> * <p> * Description: 轉換Map為Json * </p> * * @param map * 要裝換的Map * @return 返回Json字串 */ public static String mapToJson(Map<String, ?> map) { StringBuilder json = new StringBuilder(); if (map == null) { return "\"\""; } json.append("{"); Set<String> keySet = map.keySet(); if (keySet != null && !keySet.isEmpty()) { for (String string : keySet) { json.append("\"").append(string).append("\":"); Object object = map.get(string); if(object==null){ json.append("\"").append("").append("\""); }else{ if (object instanceof String || object instanceof Integer || object instanceof Short || object instanceof Boolean || object instanceof Float || object instanceof Double || object instanceof Long) { json.append("\"").append(object.toString()).append("\""); } else if (object instanceof List<?>) { json.append(listToJson((List<?>) object)); } else if(object instanceof Map){ json.append(mapToJson((Map<String ,?>) object)); }else { json.append(beanToJson(object)); } } json.append(","); } json.setCharAt(json.length() - 1, '}'); } else { json.append("}"); } if (json.toString().equals("{}")) { return "\"\""; } return json.toString(); } /** * jsonToMap * @param jsonString * @param pojoCalss * @return */ public static Map jsonToMap(String jsonString, Class pojoCalss){ JSONObject jsonObject = JSONObject.fromObject(jsonString); Iterator keyIter = jsonObject.keys(); Map valueMap = new HashMap(); while (keyIter.hasNext()) { String key = (String) keyIter.next(); Object value = jsonObject.get(key); if(value instanceof JSONArray) valueMap.put((String) key, getList4Json(((JSONArray) value).toString(), pojoCalss)); else if(value instanceof JSONObject) valueMap.put((String) key, getObject4JsonString(((JSONObject) value).toString(), pojoCalss)); else valueMap.put((String) key, value); } return valueMap; } }