在Android上用Java将2D pojo数组序列化为json
我正在构建一个国际象棋游戏,我想序列化棋盘,并在每次移动后将其发送到服务器。我将在这个任务中使用JSON 我的游戏的表现方式是我创建的名为在Android上用Java将2D pojo数组序列化为json,java,android,json,gson,Java,Android,Json,Gson,我正在构建一个国际象棋游戏,我想序列化棋盘,并在每次移动后将其发送到服务器。我将在这个任务中使用JSON 我的游戏的表现方式是我创建的名为Piece的自定义POJO的二维数组 目前我只是创建一个JSON字符串,而不是实际的JSON,这是有问题的,因为我现在不能像对待真正的JSON一样对待它,对它进行索引等等 下面是我用来创建此JSON ish构造的代码: StringBuilder result = new StringBuilder(); for (int i = 0; i < piec
Piece
的自定义POJO的二维数组
目前我只是创建一个JSON字符串,而不是实际的JSON,这是有问题的,因为我现在不能像对待真正的JSON一样对待它,对它进行索引等等
下面是我用来创建此JSON ish构造的代码:
StringBuilder result = new StringBuilder();
for (int i = 0; i < piecesMatrix.length; i++) {
result.append("\"row " + i + "\":\n");
for (int j = 0; j < piecesMatrix[i].length; j ++) {
result.append("\"column " + j + "\": ");
if (piecesMatrix[i][j] == null || piecesMatrix[i][j] instanceof LegalMove) {
result.append(" \"null\",\n");
} else {
result.append(" \"" + piecesMatrix[i][j].getClass().getSimpleName() + "\",\n");
}
}
}
message = result.toString();
问题是,我如何将其转换为真正的JSON
理想情况下,我希望输出如下所示:
"row 0":
"column 0": "Rook",
"column 1": "Knight",
"column 2": "Bishop",
...,
"row 1":
"column 0": "Pawn",
"column 1": "null",
"column 2": "Pawn",
...,
"row 2":
"column 0": "null",
"column 1": "Pawn",
"column 2": "null",
...
编辑: 我试过:
Gson gson = new
GsonBuilder().setPrettyPrinting().serializeNulls().create();
message = gson.toJson(piecesMatrix);
我得到:
[ 10-07 00:28:20.591 10899:10899 D/Data =
]
{}
SecurityException:无法使java.lang.reflect.Method构造函数可访问
编辑II 我试过:
Gson gson = new GsonBuilder().setPrettyPrinting().serializeNulls().create();
message = gson.toJson(piecesMatrix, Piece.class);
我得到:
[ 10-07 00:28:20.591 10899:10899 D/Data =
]
{}
是这样的吗
JSONArray arr = new JSONArray();
for (int i = 0; i < piecesMatrix.length; i++) {
JSONArray innerArray = new JSONArray();
for (int j = 0; j < piecesMatrix[i].length; j++) {
JSONObject column = new JSONObject();
if (piecesMatrix[i][j] == null || piecesMatrix[i][j] instanceof LegalMove) {
try {
column.put("column " + String.valueOf(j), null);
} catch (Exception e) {}
} else {
try {
column.put("column " + String.valueOf(j), piecesMatrix[i][j].getClass().getSimpleName());
} catch (Exception e) {}
}
innerArray.put(column);
}
JSONObject json = new JSONObject();
try {
json.put("row " + i, innerArray);
} catch (JSONException e) {}
arr.put(json);
}
Log.d("Data = \n\n", arr.toString());
JSONArray arr=new JSONArray();
对于(int i=0;i