我正在尝试返回已提供给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似乎知道该方法存在,因为它知道它的正确返回类型,但它声称该方法在类中是未定义的。
答案 0 :(得分:1)
似乎方法getNames
不是JSONObject 的静态方法。我对吗?
声明了哪个类?
如果是X
课,你应该这样做:
X.getNames(jsonObj);
答案 1 :(得分:1)
您确定在包含名为JSONObject的类的类路径中没有2个jar文件吗?
答案 2 :(得分:1)
当我遇到问题时,我正在使用的类是在一个单独的包中。将所有JSON类移动到与我编写的类相同的包中并删除包导入
import org.json.*;
解决了它。