2009-10-31 185 views
3

我对使用Jquery和Json很新。我有一个servlet返回一个JSONObject的数组(基本上是一个JSONArray对象)。解析JSON对象数组

我想解析JavaScript中的这个数组,并在这里遇到麻烦。 我有一个JavaScript变量“VAR结果”,从servlet获取结果,我试图解析它为结果[0] .uniqueId为例,以获取从服务器发送的uniqueId的值。但是这似乎并不适用。

下面是Java servlet代码片段,显示发送到javascript客户端的内容。

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    // TODO Auto-generated method stub 
        JSONArray arrayObj = new JSONArray(); 
      List<Folder> children =getFolders(request,response); 
      Iterator itr = children.iterator(); 
      while(itr.hasNext()) 
      { 
       Folder folder = (Folder) itr.next(); 
       obj = new JSONObject(); 
       obj.put("uniqueId", folder.getUniqueId()); 
       obj.put("folderName", folder.getFolderName()); 
       obj.put("size", folder.getSize()); 
       obj.put("modified", folder.getModified()); 

       arrayObj.add(obj); 
      } 
      out = response.getWriter(); 
      response.setContentType("application/json"); 
      out.println(arrayObj);   
} 

这是jQuery代码片断

$.ajax({ 
      url: 'getFolders', 
      type: 'POST', 
      data: 'uniqueID=' + uniqueID , 
      //console.log(data); 
      success: function(result) { 
       //parse result 
         alert("JSON result "+ result[0].uniqueId); 

       }//end success 
    }); 

请咨询如何解析的结果。

感谢 Deepthi

+0

顺便说一句,你不应该返回JSON阵列。默认的数组构造函数可以在JavaScript中重写,因此返回的数组允许和外部网站调用您的api并获取数据。 – 246tNt 2009-10-31 21:53:58

+0

感谢您的快速响应。现在我的问题是在我的servlet我迭代包含“文件夹”对象的列表。每个文件夹对象我将其转换为JSON对象。所以,我将拥有多个JSON对象。如果我不使用任何JSON数组,我如何获得多个JSON对象到客户端。另一个问题是,如果我想从服务器获取多个JSON对象。我如何解析它并获取值。请咨询我 我需要在Jquery ajax调用中的Success函数中解析多个JSON对象。 – user200290 2009-11-01 04:54:04

+0

谢谢大家,我能够弄清楚我的问题。 – user200290 2009-11-03 01:12:04

回答

3

您需要的dataType option设置为你希望从服务器返回的数据的类型:

$.ajax({ 
       dataType: 'json', 
       url: 'getFolders', 
       type: 'POST', 
       data: 'uniqueID=' + uniqueID , 
       //console.log(data); 
       success: function(result) { 
       //parse result 
        alert("JSON result "+ result[0].uniqueId); 

       }//end success 
     }); 
+0

是的,jQuery由于某种原因忽略响应中的“application/json”内容类型,所以你需要指定'dataType'。海事组织是一个错误(至少与它承认“application/xml”或“text/html”的内容类型不一致)。 – 2009-10-31 21:55:35

+0

Woops,最后一个例子应该是读“'text/xml”'。 – 2009-10-31 22:10:52