2017-05-13 16 views
-2

は私のコードです:起動時に解析JSONはここアンドロイド

try{ 
     JSONObject jsonObjitem = new JSONObject(jsonString); 
     JSONArray phrasemaster = jsonObjitem.getJSONArray("phrases"); 
     for(int i = 0; i<phrasemaster.length();i++){ 
      JSONObject scan = phrasemaster.getJSONObject(i); 
      int id = scan.getInt("id"); 

      if (id == current){ 
       String question = scan.getString("question"); 
       idoutcome1 = scan.getString("idoutcome1"); 
       idoutcome2 = scan.getString("idoutcome2"); 
       idoutcome3 = scan.getString("idoutcome3"); 
      } 
     } 


    } catch (JSONException e) { 
     e.printStackTrace(); 
    } 

ユーザーは、彼がこの番号はからアイテムを引っ張るために使用されている別のフラグメントに移動されているボタンを押すと、ランダムな番号を取得しますJSON、この番号はidとして機能します。 各アイテムには3つのIDがあります。だから私はこのコードで私のアイテムを引っ張るときに私はまた、3つのidをそのjsonアイテムから引き出します。今私が望むのは、これらのidから質問文字列を出力することです。

{ 
    "phrases": [ 
    { 
     "id": 1, 
     "question": "first item", 
     "idoutcome1": 2, 
     "idoutcome2": 3, 
     "idoutcome3": 4 
    }, 
    { 
     "id": 2, 
     "nameofoption": "item 2", 
     "question": "some question 2", 
     "idoutcome1": 5, 
     "idoutcome2": 6, 
     "idoutcome3": 7 
    }, 
    { 
     "id": 3, 
     "nameofoption": "item 3", 
     "question": "some question 3", 
     "idoutcome1": 8, 
     "idoutcome2": 9, 
     "idoutcome3": 10 
    } 
] 
} 

私はこれらの値にどのように到達できるのか分かりません。

編集:私がやろうとしていることのイラスト。 私はidoutcome1,2,3値を取って、私のボタンに出力します。 しかし、これらの数値の代わりにnameofoptionフィールドに書き込まれた値を出力したいとします。例のように、2の代わりに "left"が表示されます。

問題は、前のページにあるIDを検索して対応するIDを持つアイテムを出力しようとしていることです。この試みの過程で、どのように実装すればより深くなり、このJSON項目のidoutcomeに応じて、nameofoptionフィールドの値を表示するのでしょうか? explanation

+0

質問は明確ではありません...他のすべてに関して、JSson解析コードはどこにありますか?必要な場所にデータを渡すためのメソッドを呼び出せないのはなぜですか? –

+0

あなたはあなたがそれを使用することはできません質問の価値を引き出している? (文字列質問がローカル変数であるため) – jagapathi

+0

@ cricket_007編集 –

答えて

0

私は次のように解決しました。idoutcomeはすべてarraylistに入れられました。次に、同じjson構文解析コードを再利用してそれぞれのIDの項目をループしてから出力しました。 settextのボタン。 これは私の最初のjson経験、downvotesのおかげです。