当我尝试从json文件中读取时,我的java类中存在问题 它; s告诉我这个错误: 注意:我安装了json-simple并成功使用
线程“main”中的异常java.lang.Error:未解析的编译 问题:方法解析(FileReader)未定义类型 JSONParser
at com.cd.JSONParser.main(JSONParser.java:18)
这是我的代码:
package com.cd;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.Iterator;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;
public class JSONParser {
public static void main(String[] args) {
JSONParser parser = new JSONParser();
try {
Object obj = parser.parse(new FileReader("g:\\testm1.json"));
JSONObject jsonObject = (JSONObject) obj;
String name = (String) jsonObject.get("name");
System.out.println(name);
long age = (Long) jsonObject.get("age");
System.out.println(age);
// loop array
JSONArray msg = (JSONArray) jsonObject.get("messages");
Iterator<String> iterator = msg.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (ParseException e) {
e.printStackTrace();
}
}
}
答案 0 :(得分:2)
您以与json-simple JSONParser
类相同的方式命名自己的类。因此,编译器会将JSONParser
解析为您自己的类(com.cd.JSONParser
),而不会解析为json-simple JSONParser
(org.json.simple.parser.JSONParser
)。
重命名你的课程。或者,每次要引用此类时,请使用org.json.simple.parser.JSONParser
代替JSONParser
。
答案 1 :(得分:2)
将您的课程重命名为JSONParser
以外的其他课程。此名称与org.json.simple.parser.JSONParser
发生冲突,因此当您致电:
JSONParser parser = new JSONParser();
您实际上是在实例化com.cd.JSONParser
而不是org.json.simple.parser.JSONParser
。
一般规则,不要将您的类与您使用的某些库类(尤其是JDK类)相同,除非您真的必须这样做。在这种情况下,您始终可以使用完全限定名称,例如:
org.json.simple.parser.JSONParser parser =
new org.json.simple.parser.JSONParser();