String转json格式

非 Y 不嫁゛ 提交于 2020-01-13 00:32:08
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.List;
import com.jssh.bean.system.SysMenu;
import com.jssh.bean.system.SysMenuId;
public class JsonUtil<T> {
    /**
     * 将对象集合包装成JSON格式
     * @param list    对象集合
     * @return    JSON格式字符串
     */
    public  String setList2ToJson(List<T> list){
        StringBuffer msg=new StringBuffer("[");
        for(T obj:list){
            msg.append(setObject2Json(obj));
        }
        msg.deleteCharAt(msg.length()-1);
        msg.append("\n]");
        return msg.toString();
    }
    /**
     * 将类对象包装成JSON格式 : {'name':'a','value':'b'},
     * @param obj
     * @return    JSON格式字符串
     */
    public String setObject2Json(T obj){
        StringBuffer sb=new StringBuffer("\n{'");
        Field[] fields=obj.getClass().getDeclaredFields();
        for(Field f:fields){
            String fieldName=f.getName();
               
            //成员变量是否序列化
            if(!fieldName.equals("serialVersionUID")){
                Object methodValue=getFieldValue(fieldName, obj);
                sb.append(fieldName);
                   
                Class<?> cls=f.getType();
                /** 判断该成员变量是否自定义类对象 **/
                if(!cls.getName().equals("java.lang.String") && !cls.getName().equals("java.lang.Integer")
                        && !cls.getName().equals("java.util.Date") && !cls.getName().equals("long")){
                    sb.append("':");
                    /** 返回对象 **/
                    T o=(T)getFieldValue(f.getName(),obj) ;
                    String str=setObject2Json(o);
                    sb.append(str);
                    sb.append("\n'");
                }else{
                    sb.append("':'");
                    sb.append(methodValue.toString());
                    sb.append("',\n'");      
                }  
            }  
        }
        sb.delete(sb.length()-4,sb.length()-1);
        sb.append("},");
        return sb.toString();
    }
    /**
     * 获取类所有属性名
     * @param obj 对象
     * @return    属性数组
     */
    public String[] getFieldNames(T obj){
        Field[] fields=obj.getClass().getDeclaredFields();
        String[] fnames=new String[fields.length];
        for(int i=0;i<fnames.length;i++){
            fnames[i]=fields[i].getName();
        }
        return fnames;
    }
    /**
     * 获取属性返回值
     * @param methodName  
     * @param t
     * @return
     */
    public Object getFieldValue(String fieldName,T obj){
        /** 得到类属性值 **/
        Object methodValue=null;
        /** 组织GET方法名 **/
        String methodName="get"+fieldName.substring(01).toUpperCase()+fieldName.substring(1);
        try {
            Method method=obj.getClass().getMethod(methodName, null);
            methodValue=(Object) method.invoke(obj, null);
            if(methodValue==null) methodValue="";
        }catch(Exception e){
            e.printStackTrace();
        }
        return methodValue;
    }
       
    public static void main(String[] args) {
        SysMenu menu=new SysMenu();
        menu.setIcon("icon");
           
        SysMenuId id=new SysMenuId();
        id.setMenuModule("oooooooooooooooooooo");
        id.setMenuPrivilege("~~~~~~~~~~~~~~~~~~~~~~~~~");
        menu.setId(id);
        menu.setMenuName("xxxxxxxxxxxxxxxxxxxxxxx");
           
        SysMenu menu2=new SysMenu();
        menu2.setIcon("icon");
           
        SysMenuId id2=new SysMenuId();
        id2.setMenuModule("oooooooooooooooooooo");
        id2.setMenuPrivilege("~~~~~~~~~~~~~~~~~~~~~~~~~");
        menu2.setId(id2);
        menu2.setMenuName("xxxxxxxxxxxxxxxxxxxxxxx");
           
        List<SysMenu> list=new ArrayList<SysMenu>();
        list.add(menu);
        list.add(menu2);
           
        String str=new JsonUtil<SysMenu>().setList2ToJson(list);
        System.out.println(str);
    }
}
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!