json 대상 클래스 구축

제 이 슨
JSON 은 자바 스 크 립 트 Object Natation (자바 대상 표현법) 으로 경량급 데이터 교환 형식 으로 서버 와 자바 스 크 립 트 의 상호작용 에 매우 적합 하 다.
쉽게 말 하면 JSON 은 자바 스 크 립 트 가 데 이 터 를 교환 하 는 형식 이다.예 는 다음 과 같다.
{"username":"coolcooldool","password":"1230","usertype":"superadmin"}
{"list":[{"password":"1230","username":"coolcooldool"},{"password":"thisis2","username":"okokok"}]}
          ,        JSON         ,           ,   !~
 、     JSON   XML
          :
            XML        ,      ,  ,      Web Services,  ,     Web    ,       XML         ,             XML,       JavaScript    XML,          ,       。   ,      Web     ,           XML      ,XML           ,   AJAX          HTML         Web   。    XML       ,   HTML              ,            。
    XML    。
            ,       ,          list   Sting,    JSON     ,         ,      ,     ,            ,       。
            ,   ,       。         ,      ,      。
  1.   MyEclipse     Web Project,  Ajax_Json
  2.     ,    JsonUtil.javayoung.ajax.json,         。
package young.ajax.json;
import java.beans.IntrospectionException;
import java.beans.Introspector;
import java.beans.PropertyDescriptor;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
public class JsonUtil {
private static Log log = LogFactory.getLog(JsonUtil.class);
public static String object2json(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(string2json(obj.toString())).append("\"");
    } else if (obj instanceof Object[]) {
      json.append(array2json((Object[]) obj));
    } else if (obj instanceof List) {
      json.append(list2json((List<?>) obj));
    } else if (obj instanceof Map) {
      json.append(map2json((Map<?, ?>) obj));
    } else if (obj instanceof Set) {
      json.append(set2json((Set<?>) obj));
    } else {
      json.append(bean2json(obj));
    }
    return json.toString();
}
public static String bean2json(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 = object2json(props[i].getName());
          String value = object2json(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();
}
public static String list2json(List<?> list) {
    StringBuilder json = new StringBuilder();
    json.append("[");
    if (list != null && list.size() > 0) {
      for (Object obj : list) {
        json.append(object2json(obj));
        json.append(",");
      }
      json.setCharAt(json.length() - 1, ']');
    } else {
      json.append("]");
    }
    return json.toString();
}
public static String array2json(Object[] array) {
    StringBuilder json = new StringBuilder();
    json.append("[");
    if (array != null && array.length > 0) {
      for (Object obj : array) {
        json.append(object2json(obj));
        json.append(",");
      }
      json.setCharAt(json.length() - 1, ']');
    } else {
      json.append("]");
    }
    return json.toString();
}
public static String map2json(Map<?, ?> map) {
    StringBuilder json = new StringBuilder();
    json.append("{");
    if (map != null && map.size() > 0) {
      for (Object key : map.keySet()) {
        json.append(object2json(key));
        json.append(":");
        json.append(object2json(map.get(key)));
        json.append(",");
      }
      json.setCharAt(json.length() - 1, '}');
    } else {
      json.append("}");
    }
    return json.toString();
}
public static String set2json(Set<?> set) {
    StringBuilder json = new StringBuilder();
    json.append("[");
    if (set != null && set.size() > 0) {
      for (Object obj : set) {
        json.append(object2json(obj));
        json.append(",");
      }
      json.setCharAt(json.length() - 1, ']');
    } else {
      json.append("]");
    }
    return json.toString();
}
public static String string2json(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("
\\b");
        break;
      case '\f':
        sb.append("
\\f");
        break;
      case '
':
        sb.append("
\
");
        break;
      case '\r':
        sb.append("
\\r");
        break;
      case '\t':
        sb.append("
\\t");
        break;
      case '/':
        sb.append("
\\/");
        break;
      default:
        if (ch >= '\u0000' && ch <= '\u001F') {
          String ss = Integer.toHexString(ch);
          sb.append("
\\u");
          for (int k = 0; k < 4 - ss.length(); k++) {
            sb.append('0');
          }
          sb.append(ss.toUpperCase());
        } else {
          sb.append(ch);
        }
      }
    }
    return sb.toString();
}
}
              ,            ,  !                 JSON      ,            ,     。
 ,     ,           list        JSON      。  ,      ,      ,        ,        

좋은 웹페이지 즐겨찾기