我正在编写一个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
转换为正常的JSONArray
。或者,我是否可以使用直接的import org.json.JSONArray;
从JSON文件中读取数据,这样我就根本不必处理这种转换了。
org.json.simple
和org.json
是不同且不兼容的库。
不建议使用org.json.simple
,因为它将其所有值作为Object
返回,而org.json
允许指定返回什么type
。
解决方案不是使用org.json.simple.parser.JSONParser
(删除所有org.json.simple
导入(,而是从相关文件中读取String并将其直接传递给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>