Java JSON数组文本文件

Java JSON数组文本文件,java,json,gson,Java,Json,Gson,我见过他用这个撞到一个坑。我似乎无法从文本文件中获取地图的数组。我的意思是,除了地图的阵列瓷砖,我可以得到其他一切 这是文本文件: { '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: 'Battl

我见过他用这个撞到一个坑。我似乎无法从文本文件中获取地图的数组。我的意思是,除了地图的阵列瓷砖,我可以得到其他一切

这是文本文件:

{
'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; }
        }

}
import java.util.*;
导入java.io.*;
导入com.google.gson.*;
公共类readGoogle{
公共静态字符串映射标题;
公共静态数据;
公共静态项目;
公共静态字符串丹;
公共静态文件阅读器;
公共静态整数;
公共静态地图;
公共静态int-tile;
公共静态字符串[]wepN;
公共静态void main(字符串[]args){
试一试{
fr=新文件读取器(“map1.txt”);
}捕获(FileNotFoundException fne){
fne.printStackTrace();
}
StringBuffer sb=新的StringBuffer();
char[]b=新字符[1000];
int n=0;
试一试{
而((n=fr.read(b))>0){
sb.追加(b,0,n);
}
}捕获(IOREX异常){
printStackTrace();
}
String fileString=sb.toString();
试一试{
data=new Gson().fromJson(fileString,data.class);
}捕获(异常er){
printStackTrace();
}
System.out.println(“==============================================================================================\n”);
System.out.println(“映射名称:+data.getTitle());
System.out.println(“映射文件:+data.getName());
System.out.println(“映射ID:+data.getCurrentMap());
字符串[]wepN=新字符串[100];
字符串[]wepX=新字符串[100];
字符串[]wepY=新字符串[100];
int[]tile=新int[256];
int-wepQty=0;
试一试{
对于(int i=0;i>名称:“+wepN[i]+”(“+wepX[i]+”,“+wepY[i]+”));
}
System.out.println(“\n=======================================================================================\n”地图的分幅;
System.out.println(data.getMap());
}
公共静态类项{
公共字符串名称;
公共int x;
公共智力;
公共瓷砖;
公共字符串getName(){return name;}
public int getX(){return x;}
public int getY(){return y;}
public void setName(字符串名){this.name=name;}
公共void setX(int x){this.x=x;}
public void setY(int y){this.y=y;}
}
公共静态类数据{
私有字符串名称;
私有字符串标题;
私有int-currentMap;
私人清单项目;
私有int[][]瓷砖;
公共字符串getName(){return name;}
public int getCurrentMap(){return currentMap;}
公共字符串getTitle(){return title;}
公共列表getItems(){return items;}
public int[]getMap(){return tile;}
public void setName(字符串名){this.name=name;}
public void setTitle(字符串标题){this.title=title;}
public void setItems(列表项){this.items=items;}
public void setMap(int[]tile){this.tile=tile;}
}
}

我的想法是,数据类有一个用于保存映射的tiles字段,但在JSON中它被命名为map

尝试:

公共静态类数据{
私有字符串名称;
私有字符串标题;
私有int-currentMap;
私人清单项目;
私有int[][]映射;
公共字符串getName(){return name;}
public int getCurrentMap(){return currentMap;}
公共字符串getTitle(){return title;}
公共列表getItems(){return items;}
public int[]getMap(){return map;}
public void setName(字符串名){this.name=name;}
public void setTitle(字符串标题){this.title=title;}
public void setItems(列表项){this.items=items;}
public void setMap(int[][]map){this.map=map;}
}

我的想法是,数据类有一个用于保存映射的tiles字段,但在JSON中它被命名为map

尝试:

公共静态类数据{
私有字符串名称;
私有字符串标题;
私有int-currentMap;
私人清单项目;
私有int[][]映射;
公共字符串getName(){return name;}
public int getCurrentMap(){return currentMap;}
公共字符串getTitle(){return title;}
公共列表getItems(){return items;}
public int[]getMap(){return map;}
public void setName(字符串名){this.name=name;}
public void setTitle(字符串标题){this.title=title;}
public void setItems(列表项){this.items=items;}
public void setMap(int[][]map){this.map=map;}
}

谢谢!成功了!:D
data.getMap()[1][1]
生成
3
!:D呜呼,谢谢!成功了!:D
data.getMap()[1][1]
生成
3
!:D呜呼。
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; }
        }