get size of JSON object

JavascriptJson

Javascript Problem Overview


i have a JSON object that gets returned by an AJAX request and I am having some trouble with the .length because it keeps returning undefined. Just wondering if I'm using it right:

console.log(data.length);
console.log(data.phones.length);

They both return undefined even though they are valid objects.

Update:
Sample of the JSON object returned:

{"reqStatus":true,"phones":{"one":{"number":"XXXXXXXXXX","type":"mobile"},"two":{"number":"XXXXXXXXXX","type":"mobile"}}}

Javascript Solutions


Solution 1 - Javascript

You can use something like this

var myObject = {'name':'Kasun', 'address':'columbo','age': '29'}

var count = Object.keys(myObject).length; console.log(count);

Solution 2 - Javascript

Your problem is that your phones object doesn't have a length property (unless you define it somewhere in the JSON that you return) as objects aren't the same as arrays, even when used as associative arrays. If the phones object was an array it would have a length. You have two options (maybe more).

  1. Change your JSON structure (assuming this is possible) so that 'phones' becomes

     "phones":[{"number":"XXXXXXXXXX","type":"mobile"},{"number":"XXXXXXXXXX","type":"mobile"}]
    

(note there is no word-numbered identifier for each phone as they are returned in a 0-indexed array). In this response phones.length will be valid.

  1. Iterate through the objects contained within your phones object and count them as you go, e.g.

     var key, count = 0;
     for(key in data.phones) {
       if(data.phones.hasOwnProperty(key)) {
         count++;
       }
     }
    

If you're only targeting new browsers option 2 could look like this

Solution 3 - Javascript

you dont need to change your JSON format.

replace:

console.log(data.phones.length);

with:

console.log( Object.keys( data.phones ).length ) ;

Solution 4 - Javascript

Consider using underscore.js. It will allow you to check the size i.e. like that:

var data = {one : 1, two : 2, three : 3};
_.size(data);
//=> 3
_.keys(data);
//=> ["one", "two", "three"]
_.keys(data).length;
//=> 3

Solution 5 - Javascript

var json=[{"id":"431","code":"0.85.PSFR01215","price":"2457.77","volume":"23.0","total":"565.29"},{"id":"430","code":"0.85.PSFR00608","price":"1752.45","volume":"4.0","total":"70.1"},{"id":"429","code":"0.84.SMAB00060","price":"4147.5","volume":"2.0","total":"82.95"},{"id":"428","code":"0.84.SMAB00050","price":"4077.5","volume":"3.0","total":"122.32"}] 
var obj = JSON.parse(json);
var length = Object.keys(obj).length; //you get length json result 4

Solution 6 - Javascript

try this

$.parseJSON(data).length

Solution 7 - Javascript

use this one

Object.keys(jsonObject).length

Solution 8 - Javascript

$(document).ready(function () {
	$('#count_my_data').click(function () {
		var count = 0;
		while (true) {
			 try {
				var v1 = mydata[count].TechnologyId.toString();
				count = count + 1;
			}
			catch (e)
			{ break; }
		}
		alert(count);
	});
});

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionnkcmrView Question on Stackoverflow
Solution 1 - JavascriptKasunView Answer on Stackoverflow
Solution 2 - JavascripttomfumbView Answer on Stackoverflow
Solution 3 - JavascriptkkkView Answer on Stackoverflow
Solution 4 - JavascriptForestierSimonView Answer on Stackoverflow
Solution 5 - Javascriptsurya handokoView Answer on Stackoverflow
Solution 6 - JavascriptHafsal RhView Answer on Stackoverflow
Solution 7 - JavascriptMahesh GawhaneView Answer on Stackoverflow
Solution 8 - Javascriptuser2674838View Answer on Stackoverflow