cómo get la longitud de la matriz codificada json en javascript?

Tengo una matriz codificada json como esta:

{ "ar0":"{\"start\":{\"lat\":22.9939202,\"lng\":72.50009499999999},\"end\":{\"lat\":23.0394491,\"lng\":72.51248850000002},\"waypoints\":[[23.0316834,72.4779436]]}", "ar1":"{\"start\":{\"lat\":22.9999061,\"lng\":72.65318300000001},\"end\":{\"lat\":23.0420584,\"lng\":72.67145549999998},\"waypoints\":[[23.02237,72.6500747]]}", "ar2":"{\"start\":{\"lat\":23.0394491,\"lng\":72.51248850000002},\"end\":{\"lat\":22.9999061,\"lng\":72.65318300000001},\"waypoints\":[[23.0016629,72.58898380000005]]}" } 

mi pregunta es:

(1) ¿Cómo encontrar la longitud de esta matriz? //here it is 3

(2) ¿Cómo usar su valor?
//for example:for as0 the value is {\"start\":{\"lat\":22.9939202,\"lng\":72.50009499999999},\"end\":{\"lat\":23.0394491,\"lng\":72.51248850000002},\"waypoints\":[[23.0316834,72.4779436]]}

javascript code where i use upper things :

  function setroute(os) { var wp = []; for(var i=0;i<os.waypoints.length;i++) wp[i] = {'location': new google.maps.LatLng(os.waypoints[i][0], os.waypoints[i][1]),'stopover':false } ser.route({'origin':new google.maps.LatLng(os.start.lat,os.start.lng), 'destination':new google.maps.LatLng(os.end.lat,os.end.lng), 'waypoints': wp, 'travelMode': google.maps.DirectionsTravelMode.DRIVING},function(res,sts) { if(sts=='OK')ren.setDirections(res); }) } function fetchdata() { var jax = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP'); jax.open('POST','process.php'); jax.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); jax.send('command=fetch') jax.onreadystatechange = function(){ if(jax.readyState==4) { alert(JSON.parse(jax.responseText).ar0); try { console.log(jax.responseText); //it is not work for(var i=0;i<JSON.parse(jax.responseText).length;i++) { setroute( eval('(' + jax.responseText + ')') ); } } catch(e){ alert(e); } }} } 

Su JSON no es una matriz, sino un object. Si quieres que sea una matriz, debería ser algo como esto:

 [ "{\"start\":{\"lat\":22.9939202,\"lng\":72.50009499999999},\"end\":{\"lat\":23.0394491,\"lng\":72.51248850000002},\"waypoints\":[[23.0316834,72.4779436]]}", "{\"start\":{\"lat\":22.9999061,\"lng\":72.65318300000001},\"end\":{\"lat\":23.0420584,\"lng\":72.67145549999998},\"waypoints\":[[23.02237,72.6500747]]}", "{\"start\":{\"lat\":23.0394491,\"lng\":72.51248850000002},\"end\":{\"lat\":22.9999061,\"lng\":72.65318300000001},\"waypoints\":[[23.0016629,72.58898380000005]]}" ] 

Luego, puede get una matriz de JavaScript de la siguiente manera:

 var array = JSON.parse(jax.responseText); 

Y acceda a los valores de la siguiente manera:

 array[0] array.length 

EDITAR: para tener una matriz JSON real con el método PHP json_encode , consulte esta pregunta relacionada.

Con esta modificación, podrá utilizar todas las posibilidades de la matriz JS sin solución alternativa.

Puedes usar el siguiente código. Producirá su resultado deseado 3

 var test = { "ar0":"{\"start\":{\"lat\":22.9939202,\"lng\":72.50009499999999},\"end\":{\"lat\":23.0394491,\"lng\":72.51248850000002},\"waypoints\":[[23.0316834,72.4779436]]}", "ar1":"{\"start\":{\"lat\":22.9999061,\"lng\":72.65318300000001},\"end\":{\"lat\":23.0420584,\"lng\":72.67145549999998},\"waypoints\":[[23.02237,72.6500747]]}", "ar2":"{\"start\":{\"lat\":23.0394491,\"lng\":72.51248850000002},\"end\":{\"lat\":22.9999061,\"lng\":72.65318300000001},\"waypoints\":[[23.0016629,72.58898380000005]]}" } var getLength = function(obj) { var i = 0, key; for (key in obj) { if (obj.hasOwnProperty(key)){ i++; } } return i; }; console.log(getLength(test)); 

Los objects en JavaScript no tienen una propiedad .length como Arrays do.

En ES5 puedes hacer: Object.keys({}).length; // 0 Object.keys({}).length; // 0

La otra solución sería recorrer todas las properties de su object con un ciclo for .. in y count.

 var count = 0; Object.keys(json).forEach(function (key) { count++; alert(json[key].start.lat); }); alert(count); 

Usando jQuery

 $(json).each(function() { count++; alert(this.start.lat); }); alert(count); 

Para su primera pregunta, debe usar Object.keys(item).length

Para get los valores de su object, debe iterar sobre él con un ciclo for :

for(var key in item) { var val = item[key]; }