本帖最后由 aaronhocn 于 2012-03-13 16:38:51 编辑

解决方案 »

  1.   

    这个好办,专门有转化为JSON的工具,可以将Map、List、Object等转换为json格式,我们现在就用这个来和Extjs通信。你百度一下,资料很多,希望能帮上楼主,如果有问题就继续交流。
      

  2.   


    你我用了jsonlib,和fastjson都不行.不知道你用哪个包?能否告知下?
      

  3.   

    不能用JSONArray.fromObject(List<Object[]>).toString()转。
    可以把List<Object[]>遍历一遍,重新封装成List<Map>就行。
    JSONArray.fromObject(List<Map>).toString()木有问题,也没定义bean。
      

  4.   

    com.springsource.net.sf.json-2.2.2.jar,还需要辅助包有:commons-lang-2.5.jar、com.springsource.net.sf.ezmorph-1.0.5.jar、commons-logging-1.1.1.jar、commons-collections-3.1.jar、commons-beanutils-1.7.0.jar。你的不行指的是什么呢?是转换的不是你想要的格式,还是不能转?
      

  5.   

    你可以将查询到的数据,按照你需要的方式拼凑成需要的json:
    function getJsonStr(){
        var jsonStr = "";
        var array = new Array();
        $("#participantList").find("tr").each(function(i){
    var entitytype = $(this).find("td").eq(1).attr("id");
    var params = $(this).find("td").eq(1).attr("params");
    var entityname = $(this).find("td").eq(2).text();
    var entityid = $(this).find("td").eq(2).attr("id");
    jsonStr= "{'entitytype':'"+entitytype+"','entityname':'"+entityname+"','entityid':'"+entityid+"','params':'"+params+"'}";
    array.push(jsonStr);
        });
    return "["+array+"]";
    }
      

  6.   

    这个我常用的 愿能帮到你...   /**
       * 生成Json格式的数据
       * @param contacts
       * @return
       */
      private String buildJson(List<Contact> contacts){
       try {
        JSONArray jsonArray = new JSONArray();
        for(Contact contact:contacts){
         JSONObject jsonObject = new JSONObject();
         jsonObject.put("id", contact.getId());
         jsonObject.put("name", contact.getName());
         jsonObject.put("phone", contact.getPhone());
         jsonObject.put("a1", contact.getA1());
         jsonObject.put("a2", contact.getA2());
         jsonObject.put("a3", contact.getA3());
         jsonObject.put("a4", contact.getA4());
         jsonObject.put("a5", contact.getA5());
         jsonObject.put("a6", contact.getA6());
         jsonObject.put("a7", contact.getA7());
         jsonObject.put("a8", contact.getA8());
         jsonObject.put("a9", contact.getA9());
         jsonObject.put("a10", contact.getA10());
         jsonObject.put("a11", contact.getA11());
         jsonObject.put("a12", contact.getA12());
         jsonObject.put("a13", contact.getA13());
         jsonObject.put("a14", contact.getA14());
         jsonObject.put("a15", contact.getA15());
         jsonObject.put("a16", contact.getA16());
         jsonObject.put("a17", contact.getA17());
         jsonObject.put("a18", contact.getA18());
         jsonArray.put(jsonObject);
        }
        return jsonArray.toString();
       } catch (JSONException e) {
        e.printStackTrace();
       }
       return null;
      }
      

  7.   

    返回的时候就返回一个return JSONObject.put(list.toString)
      

  8.   

    6楼的朋友没有明白我的意思,你们这种方式的前提是知道查询的sql语句.以及数据格式对应的bean.而我的意思是查询sql语句和结果是未知的.所以无法根据bean来转json因为bean是未知的.只需将查找到结果转成json就可以.
    不知道明白了没有?
      

  9.   

    List转json没有, Map转json总有吧?
    List转为Map再转为json总行了吧?
      

  10.   

    用,jsonLibList转为Map再转为json
      

  11.   

    看看符合你的要求不
    /*
     * 全部显示列表,不带分页
     * 
     */
    public static String getListString(List list)
    {
    Map map = null;
    StringBuffer contents = new StringBuffer();
    if(list!=null)
    {
    contents.append("{\"total\":");
    contents.append(list.size());
    contents.append(",\"rows\":[");
    for(int i=0;i<list.size();i++)
    {
    map = (Map)list.get(i);
    Set entries = map.entrySet();
    if(i==list.size()-1)
    {
    if(entries != null) 
    {

    Iterator iterator = entries.iterator( );
    contents.append("{");
    while(iterator.hasNext()) 
    {
    Entry entry =(Entry)iterator.next();
    Object key = entry.getKey();
    Object value = StringUtil.nullToEmpty(entry.getValue());
    //添加key
    contents.append("\"");
    contents.append(key);
    contents.append("\":");
    //添加value
    contents.append("\"");
    contents.append(value);

    if(iterator.hasNext())
    {
    contents.append("\",");
    }
    else
    {
    contents.append("\"");
    }
    }
    contents.append("}");
    }
    }
    else
    {
    if(entries != null) 
    {

    Iterator iterator = entries.iterator( );
    contents.append("{");
    while(iterator.hasNext()) 
    {
    Entry entry =(Entry)iterator.next();
    Object key = entry.getKey();
    Object value = StringUtil.nullToEmpty(entry.getValue());
    //添加key
    contents.append("\"");
    contents.append(key);
    contents.append("\":");
    //添加value
    contents.append("\"");
    contents.append(value);

    if(iterator.hasNext())
    {
    contents.append("\",");
    }
    else
    {
    contents.append("\"");
    }
    }
    contents.append("},");
    }
    }
    }
    contents.append("]}");
    }
    return contents.toString();
    }
      

  12.   

    把你查询出的list给这个方法即可
      

  13.   

    之前做过的代码copy一下。。
    查询sql获取list
    注:类型转换为String public List<Map<String,String>> queryForList(String sql,String dbName) throws SQLException{
    Connection con = cdb.getConnection(dbName);
    ResultSet rs = null;
    Statement stmt = null;
    List list = new ArrayList();
    Map<String,String> map = new HashMap();
    try{
    stmt = con.createStatement();
    rs = stmt.executeQuery(sql);
    while(rs.next()){
    map = new HashMap();
    ResultSetMetaData rsmd = rs.getMetaData();
    int count = rsmd.getColumnCount();
    for(int i=1;i<=count;i++){
    String key = rsmd.getColumnLabel(i);
    Object obj = rs.getObject(key);
    String value = obj==null?"":obj.toString().trim();
    map.put(key.toUpperCase(), value);

    }
    list.add(map);
    }
    MsgUtil.printConsole(sql);
    con.commit();
    return list;
    }catch(Exception e){
    if(con!=null){
    con.rollback();
    }
    MsgUtil.printConsole("查询数据库失败!错误sql:"+sql);
    return new ArrayList();
    }finally{
    closeAll(con,rs,stmt);
    }
    }
    下面一个是将list转换为json格式的字符串 public static String toJsonStringByList(List<Map<String,String>> list){
    if(list == null) return "";
    StringBuffer sb = new StringBuffer("");
    sb.append("[");
    for (Map map:list) {
    Iterator it = map.keySet().iterator();
    sb.append("{");
    while(it.hasNext()){
    String key = it.next().toString();
    if(map.get(key)!=null&&!"".equals(map.get(key))){
    sb.append("\"").append(key).append("\":");
    sb.append("\"").append(map.get(key)).append("\",");
    }
    }
    if(sb.length()-1==sb.lastIndexOf(",")){
    sb.delete(sb.length()-1, sb.length());
    }
    sb.append("},");
    }
    if(sb.length()-1==sb.lastIndexOf(",")){
    sb.delete(sb.length()-1, sb.length());
    }
    sb.append("]");
    return sb.toString();
    }