菜单表如下
功能代码 功能名称     细功能代码
gn_dm    gn_mc        fgn_dm
10      客户管理    0
11      业务接待    0
1004    客户回访    10
1005    客户其他    10
100501 客户关怀    1005
100502 客户意见    1005说明:细功能代码中的代码是对应代码的子菜单
     如:客户管理代码是10,他的子菜单就是1004和1005,1005的子菜单是100501,100502
    这个编码暂时是手工编写的现在想要生成下面这个json格式的代码
{id:10,item:[{id:1004,text:"客户回访"},{id:1005,text:"客户其他",item:[{id:100501,text:"客户关怀"},{id:100502,text:"客户意见"}]}]},{id:11,text:"业务接待"}请高手帮忙写个生成这段数据的代码

解决方案 »

  1.   

     把对象查出
    放入集合
    然后用一个工具类把集合转换成json类型是string
    有个工具类请自己google
      

  2.   


    package com.m3china.util;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;/**
     * 序列化对象为JSON格式 遵循JSON组织公布标准
     * 
     * @date 2008/05/07
     * @version 1.0.0
     */
    public class JsonUtil {
    /** Commons Logging instance. */
    private static org.apache.commons.logging.Log log = org.apache.commons.logging.LogFactory
    .getLog(JsonUtil.class); /**
     * @param obj
     *            任意对象
     * @return String
     */
    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();
    } /**
     * @param bean
     *            bean对象
     * @return String
     */
    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();
    } /**
     * @param list
     *            list对象
     * @return String
     */
    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();
    } /**
     * @param array
     *            对象数组
     * @return String
     */
    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();
    } /**
     * @param map
     *            map对象
     * @return String
     */
    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();
    } /**
     * @param set
     *            集合对象
     * @return String
     */
    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();
    } /**
     * @param s
     *            参数
     * @return String
     */
    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();
    }
    }
      

  3.   

    怎么从对象转话为json我知道,这种工具类很多。主要是我想知道怎么从我提供的菜单数据,转化为我需要的那种格式的数据