日期:2014-05-17  浏览次数:20714 次

急!高分求java复杂对象到json的转换
我想使用json_lib实现服务器端和客户端的json通信

想构建成json对象是List<DBDialect> 但url username 不需要构建
其中List<? extends TableDescription> tables 对象中的TableDescription 是extends 的ResultTableDiscription
对象结构如下:
Java code

 class DBDialect{

    private String url;
    
    private String username;
    
    
    private String driverClass;
    
    
    private List<? extends TableDescription>  tables;
    

    private String resultName;
        。。。
       }


public class TableDescription {

    //table的名称
    private String tablename;
    
    //table的描述
    private String tableDes;
    
    //属性数组
    private String[] fields;
}

public class ResultTableDiscription extends TableDescription {

    private Map<String, String> results = new HashMap<String, String>();
}



构建的结果希望是类似于ext的store {{fields:{TableDescription 的fields数组,contant:{resultName:**,tables:{....}}}},{}}




------解决方案--------------------
webwork不是提供JSON lib了么!!
------解决方案--------------------
json-lib-1.0-jdk13.jar 这个系列的包都可以的
------解决方案--------------------
JSONArray ja = null;
List voList = null;
voList = JSONArray.toList(ja);


JSONArray.fromArray(Object)

大概这些方法应该可以了
------解决方案--------------------
贴一段公用的给大家:
Java code

/**
     * 将OBJ用JSONObject来描述
     * @param obj
     * @return
     */
    public static JSONObject parseObjectToJSONObject(Object obj){
        JSONObject jsonObject = JSONObject.fromObject(obj);
        return jsonObject;
    }
    /**
     * 将数组转为JSONArray格式
     * @param objs
     * @return
     */
    public static JSONArray parseArrayToJsonText(Object[] objs){
        JSONArray jsonArray = JSONArray.fromObject(objs);   
        return jsonArray;
    }
    /**
     * 将JSON格式的字符串转为JSON对象  格式:("['JSON','is','easy']")
     * @param text
     * @return
     */
    public static JSONArray  parseJsonTextToArray(String text){
        JSONArray jsonArray = JSONArray.fromObject(text);   
        return jsonArray;
    }
    /**
     * 将List集合转为JSONArray格式
     * @param list
     * @return
     */
    @SuppressWarnings("unchecked")
    public static JSONArray parseListToJsonText(List list){
        JSONArray jsonArray = JSONArray.fromObject(list);   
        return jsonArray;
    }
    
    /**
     * 将Map集合转为JSON格式数据
     * @param map
     * @return
     */
    @SuppressWarnings("unchecked")
    public static JSONObject parseMapToJsonText(Map map){
        JSONObject json = JSONObject.fromObject(map);   
        return json;        
    }
    
       //将JSON格式的字符串转为JAVABEAN
    @SuppressWarnings({ "deprecation", "unchecked" })
    public static Object format(String json,Class c){
        
        JSONObject jb = JSONObject.fromString(json);   
        return JSONObject.toBean(jb, c); 
    }

------解决方案--------------------
你这特殊情况 特殊处理嘛 自己来拼装JSON格式的字符串!