我在使用json-simple-1.1.1.jar
在Java中读取json文件时访问JSONArray(" pages")时遇到问题我的json文件大小约为32MB,格式如下:
{
"id": "0912898213",
"pages": [
{
"pageUrl": "http://www.example0.com",
"results": [
{
"number": "1"
},
{
"number": "2"
}
]
},
{
"pageUrl": "http://www.example1.com",
"results": [
{
"number": "3"
},
{
"number": "4"
}
]
}
]
}
然而,访问此json文件的Java代码如下:
JSONParser parser=new JSONParser();
JSONObject pagesObject = (JSONObject) parser.parse(new FileReader(PATH_JSON_DataExtractor));
JSONArray jsonArray= (JSONArray) pagesObject.get("pages");
for(int i=0; i<jsonArray.size(); i++){}
问题: jsonArray始终为null。虽然,json格式是正确的,它应该按预期工作!上面的Java代码使用给定的示例json(也在上面),但Java代码不能与32MB json文件一起使用。 json文件的位置也正确,格式也正确,但我仍然遇到此访问问题!
我错误地访问json文件?我一直在寻找类似的问题,我已按照确切的说明访问json文件。但我只是迷失了,因此,寻找建议使这段代码工作。非常感谢你的时间!
答案 0 :(得分:2)
使用以下代码,它对我来说非常适合。你能检查指定的文件位置是否正确吗?另请尝试阅读pagesObject.get("id")
package json.simple;
import java.io.FileReader;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
public class ReadJSON {
public static void main(String[] args) throws Exception {
JSONParser parser = new JSONParser();
JSONObject pagesObject = (JSONObject) parser.parse(new FileReader("/home/user/tmp/test.json"));
System.out.println(pagesObject.get("id"));
System.out.println(pagesObject.get("pages").getClass().getName());
JSONArray jsonArray= (JSONArray) pagesObject.get("pages");
for(int i=0; i<jsonArray.size(); i++){
System.out.println(jsonArray.get(i));
}
}
}
这是我的test.json的内容。与你的完全一样
{
"id": "0912898213",
"pages": [
{
"pageUrl": "http://www.example0.com",
"results": [
{
"number": "1"
},
{
"number": "2"
}
]
},
{
"pageUrl": "http://www.example1.com",
"results": [
{
"number": "3"
},
{
"number": "4"
}
]
}
]
}
这是我对maven的依赖
<dependency>
<groupId>com.googlecode.json-simple</groupId>
<artifactId>json-simple</artifactId>
<version>1.1.1</version>
</dependency>
答案 1 :(得分:0)
使用: -
JSONArray jsonArray= (JSONArray) pagesObject.getJSONArray("pages");