0

我正在编写一个 JAVA 程序来读取 JSON 文件数据并进行一些处理。为了从我的类路径资源文件夹中读取 JSON 文件数据,我使用以下代码:

import org.json.simple.JSONArray;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;

String filePath = "src/main/resources/SampleRequest.json";
JSONParser parser = new JSONParser();
Object object = parser.parse(new FileReader(filePath));
JSONArray inputjsonArr = (JSONArray) object;

正如我们所看到的,我正在使用import org.json.simple.JSONArray来读取和获取数据。取而代之的是,我尝试直接使用普通的 JSONArray 导入,import org.json.JSONArray;然后出现错误:

Exception in thread "main" java.lang.ClassCastException: org.json.simple.JSONArray cannot be cast to org.json.JSONArray

我想知道是否可以将 转换simple.JSONArray为 normal JSONArray。或者我是否可以使用直接从 JSON 文件中读取数据,import org.json.JSONArray;这样我根本不必处理这种转换。

4

1 回答 1

1

org.json.simple并且org.json是不同且不兼容的库。

org.json.simple不建议使用 of ,因为它会将所有值返回为Object,而org.json允许指定type要返回的内容。

解决方案不是使用org.json.simple.parser.JSONParser(删除所有org.json.simple导入),而是从相关文件中读取字符串并将其org.json.JSONArray直接传递给,如下所示:

String json = FileUtils.readFileToString(new File( "src/main/resources/SampleRequest.json"), "UTF-8" );
JSONArray array = new JSONArray(json);

如您所见,FileUtils为简单起见,我喜欢使用以下包中的,因此添加此依赖项:

<!-- https://mvnrepository.com/artifact/commons-io/commons-io -->
<dependency>
    <groupId>commons-io</groupId>
    <artifactId>commons-io</artifactId>
    <version>2.8.0</version>
</dependency>
于 2021-01-11T10:24:25.420 回答