获取JSON响应的总数

时间:2012-06-29 07:35:26

标签: jquery json

在开始循环之前,可以在jQuery中快速完成吗?或者我是否还需要在数据响应中设置一个单独的组,总计数为......第一个变量?

常见的回答如下所示:

 [
   {"name":"Tu\u011Frul","surname":"Topuz","message":"Hello World"}
   ,{"name":"Tu\u011Frul","surname":"Topuz","message":"Hello World"}
 ]

但是我会使用jQuery返回2作为总计数(在我循环遍历它们之前吗?)或者我需要做这样的事情吗?

 [
   {"total":"2"}
   ,{"name":"Tu\u011Frul","surname":"Topuz","message":"Hello World"}
   ,{"name":"Tu\u011Frul","surname":"Topuz","message":"Hello World"}
 ]

这样做最有效/最普遍(以优化方式)的方式是什么?

2 个答案:

答案 0 :(得分:7)

在json解码之后,您将获得一系列对象(来自您发布的内容)。您始终可以访问该length属性以获取总计数。

由于你有这个数组,我假设你已经能够将json响应解析为JS对象。您可以使用dataType: 'json'告诉jQuery自动为您执行此操作,或者您可以使用jQuery.parseJSON()自行解析,但如果您设置dataType:'json'或将content-Type标头设置为来自服务器的application/json

所以你可以做这样的事情

$.ajax({
      ....
      dataType: 'json',
      success(function(data){
         if(data){
          var total = data.length; 
         }
      }
 }); 

所以你不需要从服务器发回total count。在获得响应之后,您可以使用JS获得它,这将使您更容易使用$.each遍历该响应,因为整个数组包含相同类型的对象(没有任何特殊的{"total":"2"}成员)

注意: length属性是Pure vanilla JS,它与jQuery无关。

答案 1 :(得分:1)

在javascript中,你不操纵JSON(这是一个数据交换标准),而是javascript对象。

您通常使用

获取此对象
var data = JSON.parse(mystring)

或者仅仅因为你的data是jquery ajax调用的成功函数的参数:

   $.ajax(
      ....
      dataType:'json',
      success(function(data){
      }) 

解析后,你拥有的是一个javascript对象。

在你的情况下,它是一个数组,所以你可以进行标准操作:

var length = data.length;
var secondObject = data[1];
var firstObjectName = data[0].name;
///etc.