使用 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>

你可以使用这个库:

http://www.json.org/java/

然后您可以将文件读入 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);
    }
}

我没有测试过这段代码,您可能还想添加一些错误检查并提取局部变量,具体取决于您对文件格式是否正确的确定程度。这并不假设您的文件包含矩形矩阵。