获取长度并迭代嵌套数组

时间:2013-07-13 07:10:22

标签: java

我有一个JSON坐标数组。它看起来像这样。

[ [ [ [ 18.446000, -33.921060 ], [ 18.446020, -33.923410 ], [ 18.444510, -33.923620 ], [ 18.443350, -33.923990 ], [ 18.443350, -33.924360 ], [ 18.443360, -33.924970 ], [ 18.443230, -33.924970 ]]]]

我无法弄清楚如何获得内部值集[Lat,Lng],[Lat,Lng] ...的长度,所以我可以遍历它们。 在python中我会做类似的事情:

for value in values[0][0]:
    print value

java中的等价物是什么? 我想我在Java中大量混淆了数组。我现在正试图用这样的东西来对付他们,但说实话,我在黑暗中拍摄。

List<JSONObject> geocords = Arrays.asList(cords.getJSONObject(0))

我尝试过这样的事情:

for (i=0; HOW TO GET LENGTH OF INNER SET OF VALUES?; i++){

}

修改

List<JSONObject> geocords = Arrays.asList(cords.getJSONObject(0))

引发JSONException。

如果我将其更改为:

List<JSONArray> geocords = Arrays.asList(cords.getJSONArray(0));

然后geocords输出为:

[[[[18.49576,-34.01209],[18.49447,-34.01473],[18.49327,-34.01705],[18.48914,-34.02501],[18.48866,-34.02592],[18.48873,-34.02612],[18.48912,-34.027],[18.48917,-34.02711],[18.49,-34.02899],[18.49003,-34.02976],[18.49031,-34.03164],[18.49051,-34.03264],[18.49093,-34.03462],[18.49152,-34.03742],[18.4917,-34.03772],[18.4918,-34.03782],[18.49186,-34.038],[18.49184,-34.03823],[18.49159,-34.0388],[18.49105,-34.03986],[18.49041,-34.04115],[18.48984,-34.04113],[18.4891,-34.04246],[18.48784,-34.04214],[18.48791,-34.04326],[18.48786,-34.04356],[18.48754,-34.04391],[18.48738,-34.04391],[18.48713,-34.04399],[18.48693,-34.04405],[18.48677,-34.04407],[18.48665,-34.04396],[18.4865,-34.0439],[18.48631,-34.04396],[18.48611,-34.04408],[18.48598,-34.04427],[18.48599,-34.04456],[18.48595,-34.04487],[18.48583,-34.04508],[18.48557,-34.04531],[18.48527,-34.04543],[18.48496,-34.04547],[18.48446,-34.04553],[18.48418,-34.04498],[18.48342,-34.04371],[18.48335,-34.0436],[18.48267,-34.04247],[18.47827,-34.04429],[18.47818,-34.04436],[18.47645,-34.04146],[18.47652,-34.04122],[18.47662,-34.04039],[18.47632,-34.03942],[18.47611,-34.03916],[18.47611,-34.0391],[18.47589,-34.03756],[18.47588,-34.03748],[18.47438,-34.03715],[18.47389,-34.0368],[18.47308,-34.03643],[18.47103,-34.03727],[18.47053,-34.03757],[18.47029,-34.03773],[18.46953,-34.03846],[18.46925,-34.03861],[18.46915,-34.03867],[18.46899,-34.03872],[18.46877,-34.03879],[18.4683,-34.03884],[18.46806,-34.03887],[18.46791,-34.03889],[18.46757,-34.03897],[18.46747,-34.03906],[18.46728,-34.03925],[18.46711,-34.03945],[18.46698,-34.03967],[18.46685,-34.03992],[18.46672,-34.04016],[18.46664,-34.04102],[18.46656,-34.04251],[18.46648,-34.04292],[18.46637,-34.04356],[18.46617,-34.04355],[18.46585,-34.0435],[18.46575,-34.04348],[18.46561,-34.04346],[18.46538,-34.04342],[18.46515,-34.04339],[18.46484,-34.04334],[18.46447,-34.04328],[18.46396,-34.0432],[18.4636,-34.04314],[18.46366,-34.04288],[18.46374,-34.04253],[18.46237,-34.04232],[18.46158,-34.0422],[18.4613,-34.04216],[18.45996,-34.04196],[18.45925,-34.04185],[18.45863,-34.04176],[18.45756,-34.0416],[18.45656,-34.04144],[18.45602,-34.04136],[18.45571,-34.04131],[18.456,-34.03991],[18.45458,-34.03972],[18.45408,-34.03965],[18.45373,-34.03968],[18.45337,-34.03972],[18.45303,-34.03981],[18.45042,-34.0406],[18.45022,-34.04002],[18.45018,-34.03994],[18.45005,-34.03972],[18.44967,-34.03905],[18.44912,-34.03807],[18.44876,-34.03742],[18.44861,-34.03717],[18.44854,-34.03702],[18.44843,-34.03683],[18.44822,-34.03646],[18.44812,-34.03628],[18.44801,-34.0361],[18.44791,-34.0359],[18.44781,-34.03573],[18.4476,-34.03535],[18.44752,-34.03521],[18.44737,-34.03495],[18.44723,-34.03471],[18.44709,-34.03444],[18.44698,-34.03425],[18.44687,-34.03405],[18.44669,-34.03374],[18.44635,-34.03313],[18.44625,-34.03295],[18.44613,-34.03272],[18.446,-34.03251],[18.4459,-34.0323],[18.44576,-34.03205],[18.44516,-34.031],[18.44408,-34.029],[18.44385,-34.02882],[18.44376,-34.02921],[18.4437,-34.02938],[18.44364,-34.02947],[18.44328,-34.02994],[18.44296,-34.03014],[18.44236,-34.03017],[18.44179,-34.03008],[18.44168,-34.03007],[18.44054,-34.02989],[18.44019,-34.02988],[18.44001,-34.02992],[18.43968,-34.02999],[18.43951,-34.03006],[18.4394,-34.03012],[18.43935,-34.03017],[18.43849,-34.03086],[18.43808,-34.03122],[18.43759,-34.03164],[18.43714,-34.032],[18.43695,-34.03215],[18.43645,-34.03234],[18.43585,-34.03256],[18.43542,-34.03272],[18.43464,-34.033],[18.43413,-34.03319],[18.4336,-34.03335],[18.43299,-34.0335],[18.43272,-34.03353],[18.43235,-34.03358],[18.43147,-34.03363],[18.43134,-34.03364],[18.43102,-34.03367],[18.43065,-34.03373],[18.4299,-34.03394],[18.42951,-34.03404],[18.42911,-34.03414],[18.42893,-34.03415],[18.42873,-34.03418],[18.42845,-34.03422],[18.42816,-34.03429],[18.42647,-34.03472],[18.42627,-34.03478],[18.42608,-34.0349],[18.4248,-34.03586],[18.42294,-34.03728],[18.42202,-34.03798],[18.42184,-34.03806],[18.42168,-34.03813],[18.42137,-34.03811],[18.42104,-34.03806],[18.42068,-34.03799],[18.41975,-34.03781],[18.41935,-34.03786],[18.41911,-34

2 个答案:

答案 0 :(得分:3)

你确定开头的四个方括号是否合适?如果是,那么这应该有效:

        // get the array of coordinates buried two levels down of singleton arrays  
        JSONArray array = coord.getJSONArray(0).getJSONArray(0);

        // iterate through the array of coordinates
        for (int i = 0; i < array.length(); i++) {
            JSONArray inside = array.getJSONArray(i);
            for (int j = 0; j < inside.length(); j++) {
                System.out.println(inside.getDouble(j));
            }
        }

我不确定为什么json.org不提供更友好的界面(如可迭代)

答案 1 :(得分:0)

你会在Java中循环遍历内部集合:

for (int i=0;i<array.length;i+=1)
{
     for (int j=0;j<array[i].length;j+=1)
     {
          System.out.println(array[i][j]);
     }
}

或者,i可以硬编码到您想要运行的索引。