2011-07-28 21 views
1

私が望む値が配列にあることを確認するためにテストしようとしています。最初のトーストの作品の下で、JSONデータの私の全体の文字列を吐き出すだけです。トースト配列の値が正しくありません

私の新しいJSONArrayで[1]の値を表示しようとしている2番目のトーストは、jsonArrayが私に次のエラーを与えていますjsonArray can not be defined to a variable正しく参照していませんか?それは「試す」であるので、それはまた、スコープの問題である可能性があり、フィードバックに基づいて

try{ 
    JSONArray jsonArray = new JSONArray(jsonData); 
} catch (JSONException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} 
Toast.makeText(MainActivity.this, jsonData, Toast.LENGTH_LONG).show(); 
Toast.makeText(MainActivity.this, jsonArray[1], Toast.LENGTH_LONG).show(); 

EDITしてみてください、私が使用する必要がありますか?もしそうなら、私はそれをスクリプトの残りの部分で利用できるようにします。

+0

スコープの問題があります。私は自分の答えを更新しました。 –

答えて

3

JSONArrayは単なるJavaオブジェクトではなく、あなたがそれに配列インデックスを使用することはできません配列、です。おそらくあなたはjsonData[1]を意味しましたか?さらに、jsonArraytryブロックで宣言されて初期化されるため、Toast呼び出しの対象外です。最後の行は

try 
{ 
    JSONArray jsonArray = new JSONArray(jsonData); 
    // ... 
    Toast.makeText(MainActivity.this, jsonData.get(1), Toast.LENGTH_LONG).show(); 
} 
// ... 
+0

ok私はjsonArrayがそれをJava配列に変えたと思っていたので、残りのプロジェクトで使うことができました。 – Denoteone

+1

いいえ、それが 'JSONArray'としてどのように宣言されているのかを見てください。つまり、Java配列ではありません。 'List'を配列に変換したい場合は、[' List#toArray() '](http://download.oracle.com/javase/6/docs/api/java/util/List.html# toArray())。リストにインデックスを作成しようとしているだけの場合は、['List#get(int)'](http://download.oracle.com/)を使用してください。 com/javase/6/docs/api/java/util/List.html#get(int))。 –

+0

ありがとう、私は誤った理由でJSONArrayを使用していると思います。配列のように直接読むことができるのであれば、なぜそれを配列に入れる必要があるのか​​はわかりません。 – Denoteone

2

jsonArray変数は、Toastと同じスコープ内で宣言されていません。

このような何か試してみてください:

try { 
     JSONArray jsonArray = new JSONArray(jsonData); 

     Toast.makeText(MainActivity.this, jsonData, Toast.LENGTH_LONG).show(); 
     Toast.makeText(MainActivity.this, jsonArray[1], Toast.LENGTH_LONG).show(); 
    } catch (JSONException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
+0

助けてくれてありがとう+1 – Denoteone

3

変更するには::jsonDataCollectionであると仮定すると、あなたはその要素1が文字列である知っていれば

Toast.makeText(MainActivity.this, jsonArray.getString(1), Toast.LENGTH_LONG).show(); 

Toast.makeText(MainActivity.this, jsonArray.get(1).toString(), Toast.LENGTH_LONG).show(); 

または、EDIT

編集内容に基づいて、私は私はそれを見ていませんでしたが、はい、範囲の問題があります。 tryブロック内のトーストを動かしてください(私が上で示唆したものに加えて)。

関連する問題