Json 사용자 정의 함수의 간단한 실례

4572 단어 사용자 정의json
다음과 같습니다.

/*
 * Created on Nov 4, 2016
 *
 * TODO To change the template for this generated file go to
 * Window - Preferences - Java - Code Style - Code Templates
 */
package com.suning.commerce.util;

import java.sql.Date;
import java.sql.Time;
import java.sql.Timestamp;
import java.util.Collection;
import java.util.Iterator;
import java.util.Map;

import org.apache.commons.beanutils.BeanUtils;

/**
 * @author nicholas tse
 * 
 * TODO To change the template for this generated type comment go to Window - Preferences - Java - Code Style - Code Templates
 */
public class JsonUtils {
  /**
   * 
   * @param array
   * @return
   */
  private static String array2Json(Object[] array) {
    if (array.length == 0)
      return "[]";
    int i = array.length;
    StringBuffer sb = new StringBuffer(i << 4);
    sb.append('[');
    for (int j = 0; j < i; j++) {
      Object o = array[j];
      sb.append(toJson(o));
      sb.append(',');
    }
    //   ','   ']':
    sb.setCharAt(sb.length() - 1, ']');
    return sb.toString();
  }

  private static String string2Json(String s) {
    StringBuffer sb = new StringBuffer(s.length() + 20);
    sb.append('\"');
    for (int i = 0; i < s.length(); i++) {
      char c = s.charAt(i);
      switch (c) {
      case '\"':
        sb.append("\\\"");
        break;
      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; default: sb.append(c); } } sb.append('\"'); return sb.toString(); } public static String toJson(Object o) { if (o == null) { return "null"; } else if (o instanceof String) { return string2Json((String) o); } else if ((o instanceof Boolean) || (o instanceof Number)) { return o.toString(); } else if ((o instanceof Date) || (o instanceof Time)||o instanceof Timestamp) { return o.toString(); } else if (o instanceof java.util.Date) { return DateUtil.formatDate((java.util.Date)o,"yyyy-MM-dd HH:mm:ss"); } else if (o instanceof Map) { return map2Json((Map) o); } else if (o instanceof Object[]) { return array2Json((Object[]) o); } else if (o instanceof Collection) { return array2Json(((Collection) o).toArray()); } else { try { Map describe = BeanUtils.describe(o); return map2Json(describe); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } throw new RuntimeException("Unsupported type: " + o.getClass().getName()); } /** * * @param map * @return */ private static String map2Json(Map map) { if (map.isEmpty()) return "{}"; StringBuffer sb = new StringBuffer(map.size() << 4); sb.append('{'); Iterator iterator = map.keySet().iterator(); while (iterator.hasNext()) { Object key = iterator.next(); Object value = map.get(key); sb.append('\"'); sb.append(key); sb.append('\"'); sb.append(':'); sb.append(toJson(value)); sb.append(','); } // ',' '}': sb.setCharAt(sb.length() - 1, '}'); return sb.toString(); } }
지금까지 여러분에게 제시된 Json 사용자 정의 사용 함수의 간단한 실례 전부입니다. 많은 응원 부탁드립니다~

좋은 웹페이지 즐겨찾기