2

我正在尝试返回已提供给 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 似乎知道该方法存在,因为它知道其正确的返回类型,但它声称该方法在类中未定义。

4

3 回答 3

1

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

它在哪个类中声明?

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

X.getNames(jsonObj);
于 2012-07-05T11:27:17.387 回答
1

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

于 2012-07-05T11:27:19.993 回答
0

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

import org.json.*;

解决了它。

于 2012-07-05T19:43:56.027 回答