我已经看到了这一点。我似乎无法从文本文件中获取地图数组。我的意思是,我可以获得其他一切但是地图的数组瓷砖。
这是文本文件:
{
'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; }
}
}
答案 0 :(得分:3)
我的想法是Data类有一个用于保存地图的tile字段,但在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; }
}