1. 程式人生 > >java處理json工具類 涵括大多半方法

java處理json工具類 涵括大多半方法

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;
   }
}