2011-02-03 12 views
0

私はこれでぶつかるのを見ました。私はテキストファイルからマップの配列を取得することはできません。つまり、地図の配列タイルは他にはありません。Java JSON配列のテキストファイル

これはテキストファイルです:

{ 
'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 . . . 

はNULLを参照してください? *配列の数であると仮定します。

私は間違っている、おそらく、私は知っている。ここに私がこれまで持っているものは次のとおりです:

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ではmapという名前です。

試してみてください。

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ウーホー。 – nn2

関連する問題