2009-10-31 184 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