將常見對象轉換成json字符串【自己編寫方法】

public class JsonUtil {
	  
	
	public static String objectTojson(Object obj) {
	    StringBuilder json = new StringBuilder();
	    if (obj == null) {
	      json.append("\"\"");
	    } else if (obj instanceof String || obj instanceof Integer || obj instanceof Float
	        || obj instanceof Boolean || obj instanceof Short || obj instanceof Double
	        || obj instanceof Long || obj instanceof BigDecimal || obj instanceof BigInteger
	        || obj instanceof Byte) {
	      json.append("\"").append(stringTojson(obj.toString())).append("\"");
	    } else if (obj instanceof Object[]) {
	      json.append(arrayTojson((Object[]) obj));
	    } else if (obj instanceof List) {
	      json.append(listToJson((List<?>) obj));
	    } else if (obj instanceof Map) {
	      json.append(mapTojson((Map<?, ?>) obj));
	    } else if (obj instanceof Set) {
	      json.append(setTojson((Set<?>) obj));
	    } else {
	      json.append(objectToJson(obj));
	    }
	    return json.toString();
	}
    /**
      * @param object
      *             任意對象
      * @return java.lang.String
      */  
    public static String objectToJson(Object object) {   
         StringBuilder json = new StringBuilder();   
        if (object == null) {   
             json.append("\"\"");   
         } else if (object instanceof String || object instanceof Integer) { 
             json.append("\"").append(object.toString()).append("\"");  
         } else {   
             json.append(beanToJson(object));   
         }   
        return json.toString();   
     }   
	  
    /**
      * 功能描述:傳入任意一個 javabean 對象生成一個指定規格的字符串
      *
      * @param bean
      *             bean對象
      * @return String
      */  
    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) {}
    	    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) {}
    	      }
    	      json.setCharAt(json.length() - 1, '}');
    	    } else {
    	      json.append("}");
    	    }
    	    return json.toString();
     }   
	  
    /**
      * 功能描述:通過傳入一個列表對象,調用指定方法將列表中的數據生成一個JSON規格指定字符串
      *
      * @param list
      *             列表對象
      * @return java.lang.String
      */  
    public static String listToJson(List<?> list) {   
    	StringBuilder json = new StringBuilder();
        json.append("[");
        if (list != null && list.size() > 0) {
          for (Object obj : list) {
            json.append(objectTojson(obj));
            json.append(",");
          }
          json.setCharAt(json.length() - 1, ']');
        } else {
          json.append("]");
        }
        return json.toString();
     }
	    
    public static String arrayTojson(Object[] array) {
        StringBuilder json = new StringBuilder();
        json.append("[");
        if (array != null && array.length > 0) {
          for (Object obj : array) {
            json.append(objectTojson(obj));
            json.append(",");
          }
          json.setCharAt(json.length() - 1, ']');
        } else {
          json.append("]");
        }
        return json.toString();
    }
    public static String mapTojson(Map<?, ?> map) {
	        StringBuilder json = new StringBuilder();
	        json.append("{");
	        if (map != null && map.size() > 0) {
	          for (Object key : map.keySet()) {
	            json.append(objectTojson(key));
	            json.append(":");
	            json.append(objectTojson(map.get(key)));
	            json.append(",");
	          }
	          json.setCharAt(json.length() - 1, '}');
	        } else {
	          json.append("}");
	        }
	        return json.toString();
	}
    
    public static String setTojson(Set<?> set) {
	        StringBuilder json = new StringBuilder();
	        json.append("[");
	        if (set != null && set.size() > 0) {
	          for (Object obj : set) {
	            json.append(objectTojson(obj));
	            json.append(",");
	          }
	          json.setCharAt(json.length() - 1, ']');
	        } else {
	          json.append("]");
	        }
	        return json.toString();
	}
    
    public static String stringTojson(String s) {
	        if (s == null)
	          return "";
	        StringBuilder sb = new StringBuilder();
	        for (int i = 0; i < s.length(); i++) {
	          char ch = s.charAt(i);
	          switch (ch) {
	          case '"':
	            sb.append("\\\"");
	            break;
	          case '\\':
	            sb.append("\\\\");
	            break;
	          case '\b':
	            sb.append("");
	            break;
	          case '\f':
	            sb.append("");
	            break;
	          case '\n':
	            sb.append("");
	            break;
	          case '\r':
	            sb.append("");
	            break;
	          case '\t':
	            sb.append("");
	            break;
	          default:
	            if (ch >= '\u0000' && ch <= '\u001F') {
	              String ss = Integer.toHexString(ch);
	              sb.append("");
	              for (int k = 0; k < 4 - ss.length(); k++) {
	                sb.append('0');
	              }
	              sb.append(ss.toUpperCase());
	            } else {
	              sb.append(ch);
	            }
	          }
	        }
	        return sb.toString();
	    }
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章