本文介绍了如何在javascript中获取json编码数组的长度?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个像这样的json编码数组:

I have a json encoded array like this:

{
  "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]]}"

 }

我的问题是:

(1)如何查找此数组的长度? //这里是3

(1) How to find length of this array? //here it is 3

(2)如何使用它的值?

//例如:对于as0,值为{\ start\:{\ lat\:22.9939202,\ lng\:72.50009499999999},\ end\:{\ lat\:23.0394491,\ lng\:72.51248850000002},\ waypoints\:[[23.0316834,72.4779436]]}

(2) How to use it's value?
//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代码:

 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); }
    }}
}


推荐答案

您的JSON不是数组,而是对象。如果要使其成为数组,则应该是这样的:

Your JSON is not an array, but an object. If you want it to be an array, it should be something like this:

[
  "{\"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]]}"

 ]

然后,您可以获取如下所示的javascript数组:

Then, you can get a javascript array as follows:

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

访问值如下:

array[0]

array.length






编辑::为了使用PHP json_encode 方法创建真实的JSON数组,看到此相关的。


In order to have a real JSON array with the PHP json_encode method, see this related question.

通过此修改,您将无需解决方法即可使用JS数组的所有可能性。

With this modification you will be able to use all the possibilities of JS array without workaround.

这篇关于如何在javascript中获取json编码数组的长度?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-13 18:49