代码之家  ›  专栏  ›  技术社区  ›  FabricioG

从JS中的JSON获取第一级对象长度计数

  •  0
  • FabricioG  · 技术社区  · 6 年前

    我目前有一个这样的Stringify JSON对象: (重要的是,它是一个我必须将其串起来的对象,在我需要长度计数之后)

    我正在对一个返回 result . 我想我的结果应该是这样的: var myData = JSON.stringify(result);

    这产生了以下,但更多的是:

    myData =   {
        "0":[{"id": 50, "product_id": 'blah blah', etc}, {"id": 52, "product_id": 'blah blah', etc}, {"id": 50, "product_id": 'blah blah', etc}],
        "1":[{"id": 50, "product_id": 'blah blah', etc}, {"id": 52, "product_id": 'blah blah', etc}, {"id": 50, "product_id": 'blah blah', etc}],
        "2":[{"id": 50, "product_id": 'blah blah', etc}, {"id": 52, "product_id": 'blah blah', etc}, {"id": 50, "product_id": 'blah blah', etc}]
    }
    

    为了得到根级别的长度,我已经尽力了。在这个例子中有3个。我需要知道长度,这样我就可以通过循环选择每个长度。

    我该怎么做?

    我试过了 (var data in myData) 我试过了 Object.keys(myData).length .

    我已经登录了控制台 Ojbect.keys(myData).length 结果是 9234 .

    我试过的似乎都不管用。

    2 回复  |  直到 6 年前
        1
  •  2
  •   Matthew Herbst    6 年前

    我想我会加上它作为答案:)

    从服务器获取的数据是JSON格式的,因为您使用 JSON.stringify .现在,您需要先解析数据,然后才能对其进行大量操作。使用 JSON.parse 这样做:

    const serverJSONResponse = getJSONFromServer();
    const myData = JSON.parse(serverJSONResponse);
    const length = Object.keys(myData).length;
    

    请注意,有一些方法可以告诉您在客户机上使用什么来发出请求,即响应将是JSON,然后它将自动调用 JSON.PARSE 因为你不需要每次都手动操作。

        2
  •  0
  •   Mister Jojo Łukasz Daniel Mastalerz    6 年前

    Object.keys(myData).length) 完美地工作

        var myData = {
          "0": [
            { "id": 50, "product_id": "blah blah",  "etc" : 44 },
            { "id": 52, "product_id": "blah blah", "etc" : 44  },
            { "id": 50, "product_id": "blah blah", "etc" : 44  }
          ],
          "1": [
            { "id": 50, "product_id": "blah blah",  "etc" : 44 },
            { "id": 52, "product_id": "blah blah", "etc" : 44  },
            { "id": 50, "product_id": "blah blah", "etc" : 44  }
          ],
          "2": [
            { "id": 50, "product_id": "blah blah",  "etc" : 44 },
            { "id": 52, "product_id": "blah blah", "etc" : 44  },
            { "id": 50, "product_id": "blah blah", "etc" : 44  }
          ] 
        }
    
    
    
        console.log(Object.keys(myData).length) //  => 3