JSON - Find the length of objects

HI,

I'm having a JSON parsed return object set.

{
  "word":[
      "offered",
      "postings"
  ],

  "annotation":[
      ["offered highlighted","this is also given as annotation","This annotation has been added here currently","offering new annotation points","\"offered\" is in the sense of languages"],
      ["my postings","this is new annotation for postings.","my postings","this is posting annotation.... Working for the feature of the annotation."]
  ],

  "user":[
  ["","","vinoth","Anonymous","Vinoth"],
  ["Anonymous","vinoth","Anonymous","Arputharaj"]
  ],

  "id":[
  ["58","60","61","63","68"],
  ["32","57","59","62"]
  ],

  "comment":
  {
    "id58":["first comment","This is a old comment for this annotation","Next level of commenting.","Fourth comment to this annotation","testing"],
    "id61":["this is an old annotation.\r\nMy comment is very bad about this.","Second comment to this annotation"],
    "id57":["I want to add one more comment to this"]
    },

    "commentUser":{
      "id58":["vinoth","Anonymous","Vinothkumar","Vinothkumar","vinoth"],
      "id61":["Anonymous","Commentor"],
      "id57":["vinoth"]
      }
  }

I want to know about the length of each object and array.

I've used .length to get the length of annotation[0].length. I'm getting the expected result i.e.: 5. The same is to "user" & "id".

But I'm not getting the lengths of "word", "id58", "id61", etc... Also I want to know about the length of the comment & commentUser.

Please help me in this.

Answers:

Answer

The value for the key word in your example (let's call it obj) is an array, so obj.word.length should be 2.

The value for comment and commentUser is an object, which does not have length per se, so you'll need to count them yourself:

var length=0;
for(var dummy in obj.comment) length++;
Answer

To count the number of properties an object has, you need to loop through the properties but remember to use the hasOwnProperty function:

var count = 0;
for (var p in obj) {
    if (obj.hasOwnProperty(p)) {
        count++;
    }
}

If you forget to do that, you will be looping through inherited properties. If you (or some library) has assigned a function to the prototype of Object, then all objects will seem to have that property, and thus will seem one item "longer" than they intrinsically are.

To avoid the need to remember this, consider using jQuery's each instead:

var count = 0;
$.each(obj, function(k, v) { count++; });

UPDATE With current browsers:

Object.keys(someObj).length

Tags

Recent Questions

Top Questions

Home Tags Terms of Service Privacy Policy DMCA Contact Us

©2020 All rights reserved.