Souloibur
Souloibur

Reputation: 19

Trying to read 2D array from Json to Android

I have a problem reading my Json document because I want to read a 2d array looking like this:

"map" : [ ["PARED", "PARED", "PARED", "PARED", "PARED" , "PARED" , "PARED" , "PARED" , "PARED" , "PARED"], ["PARED" , "SNOWMAN" , "ESPACIO" , "PARED" , "ESPACIO" , "ESPACIO" , "ESPACIO" , "ESPACIO" , "ESPACIO" , "PUERTA"], ["PARED" , "ESPACIO" , "SOL" , "PARED" , "PARED" , "PARED" , "ESPACIO" , "PARED" , "ESPACIO" , "PARED"], ["PARED" , "ESPACIO" , "PARED" , "PARED" , "SOL" , "ESPACIO" , "ESPACIO" , "ESPACIO" , "ESPACIO" , "PARED"], ["PARED" , "ESPACIO" , "PARED" , "ESPACIO" , "ESPACIO" , "ESPACIO" , "SOL" , "ESPACIO" , "PARED" , "PARED"], ["PARED" , "ESPACIO" , "PARED" , "PARED" , "ESPACIO" , "PARED" , "PARED" , "ESPACIO" , "PARED" , "PARED"], ["PARED" , "ESPACIO" , "ESPACIO" , "ESPACIO" , "ESPACIO" , "PARED" , "SOL" , "ESPACIO" , "ESPACIO" , "PARED"], ["PARED" , "SOL" , "PARED" , "ESPACIO" , "PARED" , "PARED" , "ESPACIO" , "ESPACIO" , "SOL" , "PARED"], ["PARED" , "ESPACIO" , "ESPACIO" , "ESPACIO" , "ESPACIO" , "ESPACIO" , "ESPACIO" , "PARED" , "ESPACIO" , "PARED"], ["PARED" , "PARED" , "PARED" , "PARED" , "PARED" , "PARED" , "PARED" , "PARED" , "PARED" , "PARED"] ]

And convert it to a "String [][] mapa;" array in Android Studio, but I don't know how to read and cast it.

I really apreciate your help.

EDIT: I tried something like this, but I don't know how to continue:

mapObject.getJSONArray("map")

EDIT2 something like that?:

JSONArray mapatest = mapObject.getJSONArray("map");

            String[][] innerArray = null;

            for(int t = 0; t < mapatest.getCount(); t++){

                innerArray[t] = mapatest.getJSONArray(t);

                for(int k = 0; k < innerArray.getCount(); t++){

                    innerArray[t][k] = mapatest.getString(k);

                }
            }

Upvotes: 0

Views: 72

Answers (1)

Marcos Vasconcelos
Marcos Vasconcelos

Reputation: 18276

While mapObejct.getJSONArray("map") returns an array where each entry is the X of your table, each item of the array will be an Array itself (getJSONArray again) and will be your Y of the table.

The code would looks like:

map = obj.getJSONArray("map);
for(int i = 0; i < map.getCount(); i++){
   innerArray = map.getJSONArray(i);
   for(int k = 0; k < innerArray.getCount(); i++){
      innerItem = map.getString(k);
   }      
}

This will navigate trought i,k where they would be your array[i][k]

EDIT: With your code:

 JSONArray mapatest = mapObject.getJSONArray("map");
        String[][] innerArray = null;

        for(int t = 0; t < mapatest.getCount(); t++){
            JSONArray innerArrayObj = mapatest.getJSONArray(t);
            innerArray[t] = new String[innerArrayObj.getCount());

            for(int k = 0; k < innerArrayObj.getCount(); t++){

                innerArray[t][k] = innerArrayObj.getString(k);

            }
        }

Upvotes: 1

Related Questions