json:[{},{}]
String json="[";
for(Object obj:list){
  json=json+"{"+obj+"}";
}
json=json+"]"
return json;

解决方案 »

  1.   

    一个网友的帖子,我整理的。请参考 http://www.java2000.net/p7766
      

  2.   

    本帖最后由 kokobox 于 2008-08-24 18:15:50 编辑
      

  3.   

    那么我在前台怎么接受这个json的值啊怎么去遍历json
    前天是struts2
    <s:iterator value="list" status="status">  
    直接把json对象放在value就可以了吗
      

  4.   

    比如ajax返回的格式是{v:[{'a':'1','b':'2','c':'3'},{'a':'3','b':'2','c':'1'}]}在js中用eval例如:var resq = eval('"+ajax返回+"');var v = resq.v;for(var i = 0 ; i < v.length;i++){
       var val = eval('"+v[i]+"');
       alert(val.a);//在这里就组装值,最后innerHTML到相应的id中
    }
      

  5.   

    你的意思好像是post 一个json的object. 但返回的是一个list. 对不对?
    你还需要把list变成json返回?没这个必要吧,如果你是用struct的标签,显然就是多次一举,你就直接返回list就可以了。
    不然你的做法只是list => json => list 。有这个必要吗?
      

  6.   

    对,可以像5楼那样用js去parse json 的object.就不要用strut了
      

  7.   


    主要是因为要实现无刷新,数据更新的功能,,,可是list数据不能无刷新传递过去json好像是可以的
      

  8.   

    后台:
    List<Bean> list = new ArrayList<Bean>();
    list.add(bean);
    JSONObject json = JSONObject.forObject(list);
    response.getWrite.print(json.toString());前台得到bean中数据
    首先是循环传过来的json数据,然后 bean.属性 就可以得到数据了大概的处理是这样
      

  9.   

    如果需要无刷新就用js吧。
    <script>
      //这里的json实际上应该是写入你的jsp值,eg. var json = ${json};
      var json = "{key:'json',value:'hello world'}";
      var jsonObj = eval("(" + json + ")");
      
      for (var k in jsonObj) {
        alert(k + " : " + jsonObj[k]);
      }  
    </script>
    这样应该就可以实现你的需要了吧
    当然你先把你的object的属性变成map传递到client端.
      

  10.   

    9楼的方法也是对的,就是自己再写把java object转成json object的类.
      

  11.   


    importnet.sf.json.*;import java.util.Map;
    import java.util.HashMap;
    import java.util.List;public class Convert {
    public static JSONObject generate(List list) { Map<String, Object> map = new HashMap<String, Object>();
    map.put("totalProperty", list.size());
    map.put("root", list);
    return JSONObject.fromObject(map);
    } public static JSONObject javabean2json(Object object) {
    Map<String, Object> map = new HashMap<String, Object>();
    map.put("success", true);
    map.put("data", object);
    return JSONObject.fromObject(map);
    } public static JSONObject objectcollect2json(List list, String total) {
    Map<String, Object> map = new HashMap<String, Object>();
    map.put("totalProperty", total);
    map.put("root", list);
    return JSONObject.fromObject(map);
    }
    }
      

  12.   

    jdk5以上就可以
    测试代码 public static void main(String[] args) {
      // TODO Auto-generated method stub
      HashMap map = new HashMap();
      map.put("1", "1");
      map.put("2", "2");
      map.put("3", "3");
      map.put("4", "4");
      JSONArray jsonArray = JSONArray.fromObject(map);
      System.out.println(jsonArray);
     }
      输出结果[{"3":"3","2":"2","4":"4","1":"1"}]
    需要包:commons-collections-3.2.jarezmorph-1.0.6.jarjson-lib-2.3-jdk15.jarcommons-logging-1.0.4.jarcommons-logging-1.0.4.jar
      

  13.   

    如果是前台  jquery里面有处理json 用JS的话就用eval 直接转换成js对象
      

  14.   

    占个地儿,回家给lz个我自己封装的对象,可以很方便的生成json对象。good luck
      

  15.   

                   有那么复杂吗? 你不就是要得到数据而已嘛
    JSONObject object01 = new JSONObject();//这个可以当成你的list数据
    object01.put("id", 56);
    object01.put("name", "软件工程师");
    object01.put("phone", "132321");JSONArray jsonArray = new JSONArray();
    jsonArray.put(object01);
    jsonArray.put(object02);
    jsonArray.put(object03);这个就是json数据
      

  16.   

    Java代码块:
    List<User> list = new ArrayList<User>();
    User user = new User();
    user.setId("1");
    user.setName("aaa");
    list.add(user);JSONObject userJSON = new JSONObject();
    try {
    for (Iterator iterator = list.iterator(); iterator.hasNext();) {
    User user = (User) iterator.next();
    userJSON.put("id", user.getId());
    userJSON.put("name", user.getName());
    }
    } catch (JSONException e) {
    e.printStackTrace();
    }
    request.setAttribute("userJSON", userJSON);
    JSP代码块:
    var userJSON = ${requestScope.userJSON};
    for(temp in cateJSON)
    {
         var str = temp.id + '  ' +temp.name;
         alert(str);
    }
      

  17.   

    楼主可以参考下这个链接:
    http://www.phome.asia/forum/thread/22680.html
      

  18.   

    JSONObject json=new JSONObject();
    JSONArray  jsonarr=new JSONArray();
    for(Member  m:memberList)
    {
    json=JSONObject.fromObject(m);
    jsonarr.add(json);
    }
    response=ServletActionContext.getResponse();
    try {
    PrintWriter out=response.getWriter();
    out.write(jsonarr.toString());
    out.flush();
    out.close();
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
                          System.out.println(jsonarr.toString());
      

  19.   

    servlet中:
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
        
        List<VO> vo = Dao.findVO();//从数据库中查出装有VO的List

        JSONArray jsonArray = JSONArray.fromObject(vo);//JSONArray: json数组

        response.setHeader("Cache-Control", "no-cache");

        PrintWriter out = response.getWriter();

        out.print(jsonArray.toString());
        out.flush();
        out.close();
    }jsp中:
    $.post(url, param, function(result){
        var jsonArrayObj = JSON.parse(result);

        for(var i = 0; i < jsonArrayObj.length; i++) {
            //取出数据,做你想要的操作
        }
    });
      

  20.   

    从数据库直接生成json对象不更好么
      

  21.   

    List<User> users = new ArrayList<User>();
    User user = new User();
    user.setUname("b");
    user.setPword("b");
    user.setSex("b");
    user.setAge(2);
    users.add(user);

    JSONArray json = new JSONArray();
    //
    JSONArray jsonArray = json.fromObject(users);
      

  22.   

    学习!学习!!求详解,本人初学,也正迷惑这一点呢!各位大虾帮帮忙,给个实例看看!本人邮箱[email protected],感激不尽!!加QQ聊也行!本人QQ1049549866!!谢谢!!
      

  23.   

    大家说的都很好,
    实在不行就按照json的格式拼呗,呵呵
      

  24.   

    有实现的jar包啊:
    net.sf.json.JSONArray;
    net.sf.json.JSONObject;JSONArray a =JSONArray.fromObject(list); 
    System.out.println(a.toString()); 可以参考参考一下。
      

  25.   

        可以去找个现成的框架,json-lib,json-simple,等等,直接可以将list,map等转化成json,比自己写快,而且不会少个"}",":"什么,准确.
      

  26.   

    建议LZ到JSON官网上下载一个json的API,仔细的研究下,json功能很强大,你想要什么格式,完全可以自己去封装。
      

  27.   

    List<Object> list = new List<Object>();
    list.add(obj1);
    list.add(obj2)
    ...
    JSONArray json = new JSONArray();
    json.addAll(list);
      

  28.   

    不用jsonlib一样可以.自己写吧
      

  29.   

    最后两行多此一举...fromObject一般都是静态方法,直接调用就行。
      

  30.   

    import java.io.IOException;
    import java.text.DateFormat;
    import java.text.SimpleDateFormat;import org.apache.commons.lang.StringEscapeUtils;
    import org.codehaus.jackson.JsonGenerationException;
    import org.codehaus.jackson.JsonGenerator;
    import org.codehaus.jackson.JsonProcessingException;
    import org.codehaus.jackson.SerializableString;
    import org.codehaus.jackson.io.CharacterEscapes;
    import org.codehaus.jackson.io.SerializedString;
    import org.codehaus.jackson.map.JsonMappingException;
    import org.codehaus.jackson.map.JsonSerializer;
    import org.codehaus.jackson.map.ObjectMapper;
    import org.codehaus.jackson.map.SerializerProvider;/***
     * json工具类
     * 
     * @author yanfang.zhao
     * 
     */
    public class JsonUtil { /**
     * 将对象转换为json字符串,并将json字符串转换为unicode码
     * 
     * @param obj
     * @return
     */
    public static String toJson(Object obj) {
    if (obj == null) {
    return null;
    }
    String jsonStr = "";
    ObjectMapper mapper = new ObjectMapper();
    DateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
    mapper.setDateFormat(df);
    try {
    mapper.getJsonFactory().setCharacterEscapes(new UnicodeCharacter());
    mapper.getSerializerProvider().setNullValueSerializer(
    new NullSerializer());
    jsonStr = mapper.writeValueAsString(obj);
    } catch (JsonGenerationException e) {
    e.printStackTrace();
    } catch (JsonMappingException e) {
    e.printStackTrace();
    } catch (IOException e) {
    e.printStackTrace();
    }
    return jsonStr;
    }
    }class NullSerializer extends JsonSerializer<Object> {
    public void serialize(Object value, JsonGenerator jgen,
    SerializerProvider provider) throws IOException,
    JsonProcessingException {
    jgen.writeString("");
    }
    }class UnicodeCharacter extends CharacterEscapes {
    @Override
    public int[] getEscapeCodesForAscii() {
    return super.standardAsciiEscapesForJSON();
    }
    @Override
    public SerializableString getEscapeSequence(int ch) {
    return new SerializedString(StringEscapeUtils.escapeJava(String
    .valueOf((char) ch)));
    }
    }