现在有以下一组数据放在list中。
ID TEXT    LEAF    CLS      FUNC_CODE  FUNC_PCODE URL
1 系统管理   false   folder 100000    -1          #
2 人员管理   false   folder 100100    100000  #
3 角色管理   false  folder 100200    100000  #要把该数据转换为
private int id;
private String text;
private boolean leaf;
private String cls;
private String value;
private String url;
private List<POJOMenu> children;转成一个树形结构的数据的东西。

解决方案 »

  1.   

    有相关的jar来完成吧.
    json-lib-2.2.2-jdk15.jar.
    你的得先将List转成List<类>
    然后再使用工具转成jsonarry输出到页面.
      

  2.   


    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;  
    public class JsonUtil {   private static org.apache.commons.logging.Log log = org.apache.commons.logging.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,"vo"));  
    } else if (obj instanceof Set) {  
    json.append(set2json((Set<?>) obj));  
    } else {  
    json.append(bean2json(obj));  
    }  
    return json.toString();  
    }  
    public static String object2json(Object obj,String prex) {  
    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,prex));  
    } else if (obj instanceof Set) {  
    json.append(set2json((Set<?>) obj));  
    } else {  
    json.append(bean2json(obj,prex));  
    }  
    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()); 
    name = "\"vo."+name.substring(1);
    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 bean2json(Object bean,String prex) {  
    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()); 
    name = "\""+prex+"."+name.substring(1);
    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,String prex) {  
    StringBuilder json = new StringBuilder();  
    json.append("{");  
    if (map != null && map.size() > 0) {  
    for (Object key : map.keySet()) {  
    json.append(object2json(prex+"."+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 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 '\n':  
    sb.append("\\n");  
    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();  
    }