解析 JSON 对象数组

3
我很新于使用Jquery和Json。我有一个返回JSONObject数组的servlet(基本上是JSONArray对象)。
我试图在JavaScript中解析这个数组,但在这里遇到了麻烦。我有一个名为“var result”的javascript变量,它获得来自servlet的结果,并尝试将其解析为result [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

顺便提一下,你不应该返回JSON数组。在JavaScript中,默认的数组构造函数是可重写的,因此返回数组允许外部网站调用你的API并获取数据。 - 246tNt
感谢您的快速回复。现在我的问题是,在我的servlet中,我正在迭代一个包含“Folder”对象的列表。我将每个文件夹对象转换为JSON对象。因此,我将拥有多个JSON对象。如果我不使用任何JSON数组,如何将多个JSON对象传递给客户端?另一个问题是,如果我从服务器获取多个JSON对象,如何解析它并获取值。请给我建议。我需要在Jquery ajax调用的Success函数中解析多个JSON对象。 - user200290
谢谢大家,我已经解决了我的问题。 - user200290
1个回答

3

您需要设置dataType选项,以便与服务器返回的数据类型相匹配:

$.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
        });

是的,由于某种原因,jQuery忽略响应中的“application/json”内容类型,因此您需要指定dataType。在我看来,这是一个错误(至少与它如何确认“application/xml”或“text/html”的内容类型不一致)。 - Crescent Fresh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接