0

ここでプログラマーを始めたので、我慢してください!

音楽 Web サイトの API からアーティスト ID を取得しようとしています。これが私のコードのスニペットです:

JSONObject jsonItem = (JSONObject) jsonResults.get(i);
System.out.println(jsonItem.get("id")); // Prints 22989
int currID = (Integer) jsonItem.get("id");

複数の ID を int 配列に追加しようとしているので、後で処理できます (したがって、get(i))。

ただし、上記のコードを実行すると、次のエラーが発生します。

java.lang.Long は java.lang.Integer にキャストできません

このようなものを処理する最良の方法は何ですか? すべてを int にキャストしようとする必要がありますか? long など、さまざまなタイプの ID を処理することはできますか? これまで、このような問題に実際に遭遇したことはありません。

ありがとう!

4

2 に答える 2

1
int currID = (Integer) jsonItem.get("id");

おそらく読むべき

long currID = (Long) jsonItem.get("id");
于 2012-07-27T00:07:11.917 に答える
1

あなたのエラーから、jsonItem.get("id") の戻り値が java.lang.Long であると想定しています

ふたつのやり方

1) 優先: id を long として自分の側に保存します。

long currId = jsonItem.get("id");

2) 以下はお勧めしません。「int」に収まらない ID を取得する可能性があります。

int currId = jsonItem.get("id").intValue(); // DO NOT do this.. 

API の可用性を知らせる 2 番目のオプションについて言及しました。

于 2012-07-27T00:07:55.623 に答える