使用JSONObject Java类的静态getNames方法时,Eclipse中的语法错误

时间:2012-07-05 11:23:15

标签: java eclipse json static-methods

我正在尝试返回已提供给JSONObject类的所有名称(例如,在它们自己的数组中的所有键,没有它们的关联值)。我的代码目前如下:

String names[] = new String[10];
names = JSONObject.getNames(jsonObj);

我试图从中获取数组的方法是:

public static String[] getNames(JSONObject jo) {
    int length = jo.length();
    if (length == 0) {
        return null;
    }
    Iterator iterator = jo.keys();
    String[] names = new String[length];
    int i = 0;
    while (iterator.hasNext()) {
        names[i] = (String)iterator.next();
        i += 1;
    }
    return names;
}

这就是我得到的错误:

The method getNames(JSONObject) is undefined for the type JSONObject

但是,如果我将代码设置为故意返回并将其分配给错误类型的变量:

int inames = JSONObject.getNames(jsonObj);

突出显示上述行的JSONObject部分或jsonObj参数会导致Eclipse显示以下错误:

Type mismatch: cannot convert from String[] to int

突出显示getNames方法仍然提供与以前相同的错误。

我从中获得了什么? Eclipse似乎知道该方法存在,因为它知道它的正确返回类型,但它声称该方法在类中是未定义的。

3 个答案:

答案 0 :(得分:1)

似乎方法getNames不是JSONObject 的静态方法。我对吗?

声明了哪个类?

如果是X课,你应该这样做:

X.getNames(jsonObj);

答案 1 :(得分:1)

您确定在包含名为JSONObject的类的类路径中没有2个jar文件吗?

答案 2 :(得分:1)

当我遇到问题时,我正在使用的类是在一个单独的包中。将所有JSON类移动到与我编写的类相同的包中并删除包导入

import org.json.*;

解决了它。