使用 Java 读取 Json 文件
Read Json file using Java
我有一个 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 上操作(计算)。我正在考虑将它 read/input 放入 Java 中的二维数组。我是将 JSON 文件与使用 BufferReader 的文本文件一样对待,还是有更简单的方法在 Java 上 read/manipulate 它?我应该如何创建未知大小的二维数组?
谢谢
如果您将 JSON 作为输入并希望将其转换为 Java 二维数组,您可以使用 Jackson library 轻松转换 JSON 输入。 Jackson 可以将 JSON 转换为 POJO,将 POJO 转换为 JSON,这称为 deserialization/serialization。
用于 JSON 和 POJO 之间映射的主要 class 是 ObjectMapper
。要将 JSON 字符串转换为二维整数数组,可以使用以下 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);
运行 Jackson 所需的唯一依赖项是:
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.5.0</version> <!-- At the time of writing -->
</dependency>
你可以使用这个库:
然后您可以将文件读入 String
使用 BufferedReader
,关闭 reader 并执行如下操作:
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);
}
}
我没有测试过这段代码,您可能还想添加一些错误检查并提取局部变量,具体取决于您对文件格式是否正确的确定程度。这并不假设您的文件包含矩形矩阵。
我有一个 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 上操作(计算)。我正在考虑将它 read/input 放入 Java 中的二维数组。我是将 JSON 文件与使用 BufferReader 的文本文件一样对待,还是有更简单的方法在 Java 上 read/manipulate 它?我应该如何创建未知大小的二维数组?
谢谢
如果您将 JSON 作为输入并希望将其转换为 Java 二维数组,您可以使用 Jackson library 轻松转换 JSON 输入。 Jackson 可以将 JSON 转换为 POJO,将 POJO 转换为 JSON,这称为 deserialization/serialization。
用于 JSON 和 POJO 之间映射的主要 class 是 ObjectMapper
。要将 JSON 字符串转换为二维整数数组,可以使用以下 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);
运行 Jackson 所需的唯一依赖项是:
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.5.0</version> <!-- At the time of writing -->
</dependency>
你可以使用这个库:
然后您可以将文件读入 String
使用 BufferedReader
,关闭 reader 并执行如下操作:
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);
}
}
我没有测试过这段代码,您可能还想添加一些错误检查并提取局部变量,具体取决于您对文件格式是否正确的确定程度。这并不假设您的文件包含矩形矩阵。