【问题标题】:Get the number of elements in a json object using jquery [duplicate]使用jquery获取json对象中的元素数[重复]
【发布时间】:2012-12-17 00:55:45
【问题描述】:

可能重复:
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种食物元素!

标签: jquery json


【解决方案1】:

假设您已经解析了 JSON(或者 jQuery 已经为您完成了解析,如果您使用它的 Ajax 函数,它将解析)并且您将结果对象保存在一个变量中,只需执行以下操作:

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

(注意:There's no such thing as a JSON object:在解析 JSON 之前它是一个 string; 解析它之后它是一个 object。)

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

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

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

【讨论】:

  • 不客气。请注意,我最后一行代码中的? : 测试是允许一个可能的没有属性的空对象。如果您知道总会有一个属性,请说numberOfElements = data[propName].length;...
【解决方案2】:
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);​

演示:http://jsfiddle.net/XhG6L/

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

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

【讨论】:

  • 这一切都很好,但出于动态目的,我可能不知道“食物”元素?
  • 你的意思是,你不会知道属性名?
  • 我建议你重新检查结构。更一致的键将使事情变得更容易。也许像 {categoryName: "food", items: [{name: '',}, ...]}
【解决方案3】:

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

您可以使用长度属性来获取计数。应在食品项目上调用此属性。由于 food 有返回三个项目,你可以使用data.food.length; data 是全局对象。

还要确保您的JSON is valid。虽然它看起来有效,但看起来有手动换行符,在这种情况下它会失败:

【讨论】:

    猜你喜欢
    • 2013-01-13
    • 2020-10-02
    • 1970-01-01
    • 2017-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-18
    相关资源
    最近更新 更多