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

methodは JSONObjectgetNamesの static メソッドではないようです。私は正しいですか?

どのクラス内で宣言されていますか?

それがクラスのX場合は、次のことを行う必要があります。

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

クラスパスに、JSONObject という名前のクラスを含む 2 つの jar ファイルがありませんか?

于 2012-07-05T11:27:19.993 に答える
0

問題が発生したとき、使用していたクラスは別のパッケージにありました。すべてのJSONクラスを私が書いたクラスと同じパッケージに移動し、パッケージのインポートを削除します

import org.json.*;

解決しました。

于 2012-07-05T19:43:56.027 に答える