• 自己实现Java中List对象转换为JSON对象


    1.在你的MyEclipse里新建一个Web Project,就叫Ajax_Json吧。
    2.新建一个类,名字叫做JsonUtil.java,打包到young.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 '':  
                     sb.append("\b");  
                     break;  
                   case 'f':  
                     sb.append("\f");  
                     break;  
                   case '
    ':  
                     sb.append("\n");  
                     break;  
                   case '
    ':  
                     sb.append("\r");  
                     break;  
                   case '	':  
                     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();  
      }  
    }  
    

      

  • 相关阅读:
    Silverlight“.NET研究” 2.5D RPG游戏技巧与特效处理:(七)动画特写 狼人:
    Silverlight 2.5D RPG游戏“.NET研究”技巧与特效处理:(六)流光追影 狼人:
    WPF中使用amCh“.NET研究”arts绘制股票K线图 狼人:
    验证.N“.NET研究”ET强命称的思路和实例 狼人:
    ASP.NET“.NET研究”下用URLRewriter重写二级域名 狼人:
    spring初始化在ServletContextListener实现类中获取spring注入对象
    执行原因【菜鸟笔记】Ubuntu系统shellscript中 关于for循环以及declare出错的原因
    jqueryfunctionchrome浏览器不支持 onmouseleave事件的解决
    异步线程C#异步委托的使用
    android删除android拦截短信并删除该条短信
  • 原文地址:https://www.cnblogs.com/qukaicheng/p/7605882.html
Copyright © 2020-2023  润新知