你的data是List类型的,把它转换成字符串就会调用List的toString()方法,而List的toString()方法,当然会打印List中每一个元素的地址啦。你前台需要的那种数据类型是json数组,你可以自己使用data里面的数据拼凑成那样的字符串出来,也可以用JSONObject和JSONArray这两个对象去做,不过这两个东西需要jar包支持

解决方案 »

  1.   

    可能你理解错了,我返回值是json类型,但是多了个{data=[我需要的数据]}这个东西,本来只需要这块 [],但是怎么返回这块我不懂
      

  2.   

    麻烦楼主看清楚点,你说的你的返回数据是这样的{data=[com.competence.querycompetence.pojo.QueryCompetence@993aaa, 
    com.competence.querycompetence.pojo.QueryCompetence@1da931b, 
    com.competence.querycompetence.pojo.QueryCompetence@f00e0f, 
    com.competence.querycompetence.pojo.QueryCompetence@2b2c81]}这个字符串很明显是调用的List对象的toString()方法返回的一个字符串,并且在[]这个里面是那些对象的地址,而不是楼主需要的数据
      

  3.   

    可能你理解错了,我返回值是json类型,但是多了个{data=[我需要的数据]}这个东西,本来只需要这块 [],但是怎么返回这块我不懂是你自己理解错了。
    1 自己去写代码一个一个拆开,拼字符串。
    2 用jsonlib包里的工具类和方法转换。
      

  4.   

    我需要的格式是一个json,而前台如果用ajax通过strus2是可以获取到我后台的这些数据,再获取这个数据里面的data数据是可以在表格展示,但是我现在只是不需要{data=}这个东西,直接把[]从后台返回去
      

  5.   

    Jackson 转换,PrintWriter输出
      

  6.   

    [
        {"name":"地市权限", "id":"ds","pid":"", expanded: true},
        {"name":"广州", "id":"gz", "pid": "ds"},
        {"name":"中山","id":"zs", "pid": "ds"},
        {"name":"清远", "id":"qy", "pid": "ds"}
    ]
    public class A{
    String name;
    String id;
    String pid;
    String expanded;
    都加上set和get
    }
    之后把对象放到list里 ,之后把list转成json 就是你要的格式了
      

  7.   

    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.Collection;
    import java.util.List;import net.sf.json.JSONArray;
    import net.sf.json.JSONObject;public class JsonUtils {
      
      public static String encodeList(Object[] objs) {
        return encodeList(Arrays.asList(objs));
      }  @SuppressWarnings("unchecked")
      public static String encodeList(Collection objs) {
        JSONArray list = new JSONArray();
        if (objs == null || objs.size() == 0)
          return list.toString();
        for (Object ae : objs) {
          list.add(ae);
        }
        return list.toString();
      }
      
      @SuppressWarnings("unchecked")
      public static String encodeObject(Object obj){
        if(obj instanceof Collection)
          return encodeList((Collection)obj);
        JSONObject jo = JSONObject.fromObject(obj);
        return jo.toString();
      }
      
      @SuppressWarnings("unchecked")
      public static <T>List<T> decodeList(String str, Class<T> clazz) {
        if (str == null || "".equals(str))
          return null;
        JSONArray obj = JSONArray.fromObject(str);
        Object[] rts = obj.toArray();
        List<T> result = new ArrayList<T>(rts.length);
        for (int i = 0; i < rts.length; i++) {
          Object jo = rts[i];
          T ele = (T)JSONObject.toBean((JSONObject) jo, clazz);
          result.add( ele );
        }
        return result;
      }
      
      @SuppressWarnings("unchecked")
      public static <T>T decodeObject(String json,Class<T> clz){
        JSONObject jsonObject = JSONObject.fromObject(json);
        T bean = (T) JSONObject.toBean(jsonObject, clz);
        return bean;
      }
    }
    集合转成json的方法  
      

  8.   

    感谢各位的回答,但我想说明一点,我用的是struts2,就如我struts2代码所示:
    <action name="queryCompetenceByPage" class="com.competence.querycompetence.command.QueryCompetenceCommand" method="queryCompetenceByPage">
         <result  type="json" />
    </action>  
    如果返回的是json类型,strurs2会自动转换成json类型,而我需要返回{data=[我需要的数据]}里面的[],所以只需要在starts2里面配置一下就行,配置代码如下:<action name="queryCompetenceByPage" class="com.competence.querycompetence.command.QueryCompetenceCommand" method="queryCompetenceByPage">
         <result  type="json" >
         <param name="root">data</param>
         </result>
    </action>