2011-02-03 3 views
0

Я видел, как это ударило об этом. Кажется, я не могу получить массив карты из текстового файла. Я имею в виду, я могу получить все остальное, но плитки массива карты.Java JSON Array Текстовые файлы

Это текстовый файл:

{ 
'name': 'map_one.txt', 
'title': 'xxx One', 
'currentMap': 4, 
'rightMap': 3, 
'lefttMap': 5, 
'downMap': 1, 
'upMap': 2, 
'items': [ 
    { name: 'Pickaxe', x: 5, y: 1 }, 
    { name: 'Battleaxe', x: 2, y: 3 } 
], 
    'map': [ [ 1,3,1,1,1,24,1,1,1,1,1,1,1 ], 
    [ 1,3,1,1,1,24,1,1,1,1,1,1,1 ], 
    [ 1,7,1,1,1,24,1,1,24,1,1,1,1 ], 
    [ 1,7,1,1,7,1,1,1,24,1,1,1,1 ], 
    [ 1,7,7,7,1,24,24,24,24,1,1,1,1 ], 
    [ 1,1,7,1,1,24,1,24,1,1,1,1,1 ], 
    [ 1,1,1,1,1,24,1,1,1,1,1,1,1 ], 
    [ 1,1,3,1,1,24,1,1,1,1,1,1,1 ], 
    [ 1,3,3,1,1,24,1,1,1,1,1,1,1 ]] 
}; 

и когда я запускаю его, я получаю это:

========================== 
JSON MAP LOAD... 
========================== 

Name of map: xxx One 
File of map: map_one.txt 
ID of map: 4 

========================== 
ITEMS IN MAP 
========================== 

# OF ITEMS: 2 

>> Name: Pickaxe (5, 1) 
>> Name: Battleaxe (2, 3) 

========================== 
TILES OF MAP 
========================== 

null 
Press any key to continue . . . 

См нуль? Это * предположительно количество массивов.

Я делаю это неправильно, возможно, я знаю. Вот то, что я до сих пор:

import java.util.*; 
import java.io.*; 
import com.google.gson.*; 


public class readGoogle { 

    public static String MapTitle; 
    public static Data data; 
    public static Item item; 
    public static String dan; 
    public static FileReader fr; 
    public static int number; 
    public static int currentMap; 
    public static int tile; 
    public static String[] wepN; 


     public static void main(String[] args) { 


try { 
    fr = new FileReader("map1.txt"); 
}catch(FileNotFoundException fne) { 
    fne.printStackTrace(); 
} 
     StringBuffer sb = new StringBuffer(); 
     char[] b = new char[1000]; 
     int n = 0; 
     try { 
     while ((n = fr.read(b)) > 0) { 
      sb.append(b, 0, n); 
     } 
     }catch(IOException rex) { 
      rex.printStackTrace(); 
     } 
     String fileString = sb.toString(); 

    try { 
    data = new Gson().fromJson(fileString, Data.class); 
    }catch (Exception er) { 
     er.printStackTrace(); 
    } 

System.out.println("==========================\n JSON MAP LOAD...\n==========================\n"); 

    System.out.println("Name of map: " + data.getTitle()); 
    System.out.println("File of map: " + data.getName()); 
    System.out.println("ID of map: " + data.getCurrentMap()); 


String[] wepN = new String[100]; 
String[] wepX = new String[100]; 
String[] wepY = new String[100]; 
int[] tile = new int[256]; 

int wepQty = 0; 

try { 
for (int i=0; i < wepN.length; i++) { 
    if (data.getItems().get(i).getName() == null || "".equals(data.getItems().get(i).getName())) { 
     System.out.println(data.getItems().get(i).getName() + " -NO MOARE"); 
     break; 
    } 

    wepN[i] = data.getItems().get(i).getName(); 
    wepX[i] = Integer.toString(data.getItems().get(i).getX()); 
    wepY[i] = Integer.toString(data.getItems().get(i).getY()); 

    wepQty++; 
} 
}catch(Exception xe) { } 

System.out.println("\n==========================\n ITEMS IN MAP\n==========================\n"); 
System.out.println("# OF ITEMS: " + wepQty + "\n"); 

for (int i=0; i < wepQty; i++) { 
     System.out.println(">> Name: " + wepN[i] + " (" + wepX[i] + ", " + wepY[i] + ")"); 
    } 

System.out.println("\n==========================\n TILES OF MAP\n==========================\n"); 

System.out.println(data.getMap()); 
    } 


public static class Item { 
     public String name; 
     public int x; 
     public int y; 
     public int tile; 

     public String getName() { return name; } 
     public int getX() { return x; } 
     public int getY() { return y; } 

     public void setName(String name) { this.name = name; } 
     public void setX(int x) { this.x = x; } 
     public void setY(int y) { this.y = y; } 
    } 


     public static class Data { 
      private String name; 
      private String title; 
      private int currentMap; 
      private List<Item> items; 
      private int[][] tile; 

      public String getName() { return name; } 
      public int getCurrentMap() { return currentMap; } 
      public String getTitle() { return title; } 
      public List<Item> getItems() { return items; } 
      public int[][] getMap() { return tile; } 

      public void setName(String name) { this.name = name; } 
      public void setTitle(String title) { this.title = title; } 
      public void setItems(List<Item> items) { this.items = items; } 
      public void setMap(int[][] tile) { this.tile = tile; } 
     } 

} 

ответ

3

Моя мысль в том, что класс данных имеет поле плитки для проведения карту, но в формате JSON он назван на карте.

попробовать:

public static class Data { 
      private String name; 
      private String title; 
      private int currentMap; 
      private List<Item> items; 
      private int[][] map; 

      public String getName() { return name; } 
      public int getCurrentMap() { return currentMap; } 
      public String getTitle() { return title; } 
      public List<Item> getItems() { return items; } 
      public int[][] getMap() { return map; } 

      public void setName(String name) { this.name = name; } 
      public void setTitle(String title) { this.title = title; } 
      public void setItems(List<Item> items) { this.items = items; } 
      public void setMap(int[][] map) { this.map= map; } 
     } 
+0

Спасибо! Это сработало! : D 'data.getMap() [1] [1]' производит '3'! : D Woohoo. – nn2