使用jquery获取json对象中的元素数

时间:2012-12-17 00:55:45

标签: jquery json

  

可能重复:
  Find length (size) of an array in jquery

我有一个从php文件返回的json对象,如下所示: -

{"food":[
    {
        "name"       :"Belgian Waffles",
        "price"      :"$5.95",
        "description":"two of our famous Belgian Waffles with plenty of real maple syrup",
        "calories"   :"650"
    },
    {
        "name"       :"Strawberry Belgian Waffles",
        "price"      :"$7.95",
        "description":"light Belgian waffles covered with strawberries and whipped cream",
        "calories"   :"900"
    },
    {
        "name"       :"Berry-Berry Belgian Waffles",
        "price"      :"$8.95",
        "description":"light Belgian waffles covered with an assortment of fresh berries and whipped cream",
        "calories"   :"900"
    }
]}

这基本上是从物体中返回三个食物元素。如果json数据是动态的并且使用jquery不知道,我怎样才能得到返回的元素总数?

3 个答案:

答案 0 :(得分:16)

假设您已经解析了JSON(或者jQuery已经为您完成了它,如果您使用它的Ajax函数它将会这样做)并且您将结果对象放在变量中,只需执行此操作:

var data = /* your parsed JSON here */
var numberOfElements = data.food.length;

(注意:There's no such thing as a JSON object:在解析JSON之前,它是一个字符串; 在你解析之后它是一个对象。

编辑:在评论中你说你不会知道该属性被称为food - 如果你知道将只有一个属性并且该属性将是数组你可以这样做:

var data = /* your object */
var propName;
var numberOfElements;
for (propName in data);
numberOfElements = propName ? data[propName].length : 0;

如果知道将只有一个属性,那么您的要求太模糊:如果可能有多个属性,您想要检查其长度?

答案 1 :(得分:6)

var json = '{"food":[{"name":"Belgian Waffles","price":"$5.95","description":"two of our famous Belgian Waffles with plenty of real maple syrup","calories":"650"},{"name":"Strawberry Belgian Waffles","price":"$7.95","description":"light Belgian waffles covered with strawberries and whipped cream","calories":"900"},{"name":"Berry-Berry Belgian Waffles","price":"$8.95","description":"light Belgian waffles covered with an assortment of fresh berries and whipped cream","calories":"900"}]}';

var obj = JSON.parse(json);

alert(obj.food.length);​

DEMO:http://jsfiddle.net/XhG6L/

请注意,IE8及以下版本不支持JSON,但有一个polyfill可用。

另外,正如另一个说明,jQuery没有在这里工作 - 这只是普通的旧javascript。

答案 2 :(得分:0)

  

如何计算返回的元素总数   如果json数据是动态的并且不知道使用jquery?

您可以使用length属性来获取计数。应该在食品上调用此属性。由于食物已经返回三个项目,您可以使用data.food.length;数据作为全局对象。

另外请确保JSON is valid。虽然它似乎有效,但看起来有手动换行符,在这种情况下会失败: