我有一个JSON文件:
[[10,5,0,...,1,8],[3,6,3,...,6,3],[15,7,2,...,1,1 ],[8,7,4,...,8,3], [...],[6,11,0,...,5,1]]
nXm矩阵。 (n和m未知)。
我想在Java上操作(做计算)。我正在考虑用Java读取/输入到2D数组中。我是否使用BufferReader将JSON文件视为与文本文件相同,或者是否有更简单的方法在Java上读取/操作它?我该如何创建未知大小的二维数组呢?
谢谢
答案 0 :(得分:1)
如果您将JSON作为输入并希望将其转换为Java 2D阵列,则可以使用Jackson library轻松转换JSON输入。 Jackson可以将JSON转换为POJO和POJO转换为JSON,这称为反序列化/序列化。
用于JSON和POJO之间映射的主类是ObjectMapper
。要从JSON字符串转换为2D数组,可以使用以下Java代码:
final String json = "[[1, 2, 3], [1, 2, 3, 4], [1, 2, 3, 4, 5]]";
// Create a Jackson mapper
ObjectMapper mapper = new ObjectMapper();
// Map the JSON to a 2D array
final int[][] ints = mapper.readValue(json, int[][].class);
运行杰克逊所需的唯一依赖是:
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.5.0</version> <!-- At the time of writing -->
</dependency>
答案 1 :(得分:1)
您可以使用此库:
然后你可以将文件读成String
使用的BufferedReader
,关闭读者并执行以下操作:
JSONArray ja = new JSONOArray(string);
int[][] result = new int[ja.length()][];
for (int i = 0; i < ja.length(); i++) {
JSONAarray ja2 = ja.getJSONArray(i);
result[i] = new int[ja2.length()];
for (int j = 0; j < ja2.length(); j++) {
result[i][j]=ja2.getInt(j);
}
}
我还没有测试过这段代码,你也可能想要添加一些错误检查并提取局部变量,具体取决于你对文件的格式是否正确。这并不假设您的文件包含矩形矩阵。