2017-05-13 116 views
-2

这里是我的代码:解析JSON从嵌套结果的Android

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。 每个项目都有另外三个ID。所以当我用这段代码拉我的物品时,我也从这个json物品中拉出3个id。现在我想要从这些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它应该显示“左”。

问题是,我有这个尝试,搜索它在前一页得到的ID,并输出具有相应ID的项目。我怎样才能在这个尝试的过程中实现它,它会更深入,并取决于这个JSON项目的idoutcome的显示来自nameofoption字段的值? explanation

+0

问题不清楚... json解析代码与其他一切相关的地方在哪里?为什么不能调用一个方法将数据传递到需要的地方? –

+0

你正在抛出你不能使用它的价值问题吗? (因为String问题是局部变量) – jagapathi

+0

@ cricket_007请参阅编辑 –

回答

0

我已经解决了它在下面的方式,所有的idoutcome的被放在ArrayList中,然后我再用同样的JSON通过与各自的ID,然后输出它们TI的项目解析代码回路带有settext的按钮。 这是我第一次json体验,感谢downvotes。