2

当我尝试从 json 文件中读取它时,我的 java 类有问题;s 告诉我这个错误:注意:我安装了 json-simple 并成功使用它

线程“main”java.lang.Error 中的异常:未解决的编译问题:方法 parse(FileReader) 未定义 JSONParser 类型

在 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();
            }

             }

    }
4

2 回答 2

2

您以与 json-simple 类相同的方式命名自己的JSONParser类。因此编译器解析JSONParser为您自己的类 ( com.cd.JSONParser) 而不是 json-simple JSONParser( org.json.simple.parser.JSONParser)。

重命名您的班级。或者每次你想引用这个类时使用org.json.simple.parser.JSONParser代替。JSONParser

于 2013-07-18T16:56:16.940 回答
2

将您的课程重命名为JSONParser. 此名称与 冲突org.json.simple.parser.JSONParser,因此当您调用时:

JSONParser parser = new JSONParser();

您实际上是在实例化 yourcom.cd.JSONParser而不是org.json.simple.parser.JSONParser.

一般规则,除非您确实必须这样做,否则不要将您的类与您使用的某些库类(尤其是 JDK 类)相同。在这种情况下,您始终可以使用完全限定名称,例如:

org.json.simple.parser.JSONParser parser =
    new org.json.simple.parser.JSONParser();
于 2013-07-18T16:57:12.523 回答