对于JSONParser类型,未定义方法解析(FileReader)

时间:2013-07-18 16:48:28

标签: java

当我尝试从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();
            }

             }

    }

2 个答案:

答案 0 :(得分:2)

您以与json-simple JSONParser类相同的方式命名自己的类。因此,编译器会将JSONParser解析为您自己的类(com.cd.JSONParser),而不会解析为json-simple JSONParserorg.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();