2016-11-29 66 views
0

My result image of android app我得到android的雙jsonarray提取並沒有得到結果返回

這是輸出我得到我需要得到name的值的圖像。我正在嘗試的代碼是

JSONArray jsonArray = new JSONArray(result); 

JSONObject jsonObject = new JSONObject(jsonArray); 

String name = jsonObject.getString("name"); 

但它不工作。誰能幫我對此 非常感謝

這是在其我就

$aircraftId = filter_input(INPUT_POST, 'aircraftId'); 
      $arr = array(); 
      $stmt = $db->prepare("SELECT * FROM temp WHERE aircraft_id = :aid"); 
      $stmt->execute(array(':aid' => $aircraftId)); 
      $data = $stmt->fetchAll(PDO::FETCH_OBJ); 
      $x = 0; 
      foreach ($data as $in) 
      { 
       $arr[$x][] = array(
       'id' => $data->id, 
       'name' => $data->name, 
       'label' => $data->label, 
       'description' => $data->description, 
       'type' => $data->type, 
       'value' => $data->value, 
       'deliminator' => $data->deliminator, 
       'deliminator2' => $data->deliminator2, 
       'title' => $data->title, 
       'part_number' => $data->part_number, 
       'serial_number' => $data->serial_number, 
       'mm' =>$data->mm, 
       'cost' =>$data->cost, 
       'category' =>$data->category, 
       'timeInstall' => $data->timeInstall, 
       'customType' => $data->customType, 
       'engineNumber' => $data->engineNumber, 
       'activateMargin' => $data->activateMargin, 
       'margin0' => $data->margin0, 
       'margin1' => $data->margin1, 
       'margin2' => $data->margin2, 
       'margin3' => $data->margin3, 
       'displayField' => $data->displayField, 
       'tso1' => $data->tso1, 
       'tso2' => $data->tso2, 
       'tso3' => $data->tso3, 
       'tso4' => $data->tso4, 
       'interval1' => $data->interval1, 
       'interval2' => $data->interval2, 
       'interval3' => $data->interval3, 
       'interval4' => $data->interval4, 
       'rmg1' => $data->rgm1, 
       'rmg2' => $data->rmg2, 
       'rmg3' => $data->rmg3, 
       'rmg4' => $data->rmg4, 
       'lcw1' => $data->lcw1, 
       'lcw2' => $data->lcw2, 
       'lcw3' => $data->lcw3, 
       'lcw4' => $data->lcw4 
      ); 
       $x = $x+1; 
      } 

      echo json_encode($arr); 
+0

添加代碼Json解析邏輯正確 – Gaurav

+0

您可以發佈您正在使用的後端腳本來獲取json響應。 –

+0

我認爲這是由於你格式不正確的JSON字符串。在這裏添加你在吐司中顯示的JSON響應,以及如何在java代碼中進行解析? –

回答

1

你是不是解析響應正確。 記住「[」顯示JSONArray已啓動,並且在響應中有兩個[這意味着在獲取JSONObject內的JSONObject和可能的數據之前,您需要獲取兩個JSONArrays。

試試這個

try { 
     JSONArray responseArray = new JSONArray(result); 
     JSONArray innerArray = responseArray.getJSONArray(0); 
     for (int i = 0; i < innerArray.length(); i++) { 
      JSONObject jsonObject = innerArray.getJSONObject(i); 
      String id = jsonObject.getString("id"); 
      String name = jsonObject.getString("name"); 
     } 
    } catch (JSONException e) { 
     e.printStackTrace(); 
    } 

@ Tabish的代碼,甚至更好,如果你是第一個陣列內獲得多個陣列。

+0

非常感謝它工作 – bufferking

+0

高興地幫助:) – Raheel

0

你的第一線工作的後端PHP代碼是正確的JSONArray jsonArray = new JSONArray(result);

下一頁說法應該是一個循環。遍歷jsonArray對象。例如:

for(int i = 0; i < jsonArray.length(); i++) { 
JsonObject jsonObject = jsonArray.getJsonObject(i); 
String name = jsonObject.getString("name"); 
} 

你可以試試嗎?

0

有兩個JsonArrays,然後把JSONObject想出了這麼

JsonArray jsonArray = new JsonArray(results); 
for (int i = 0 ; i< jsonArray.length() ; i++){ 
    JsonArray jsonArray1 = jsonArray.get(i); 
     for(int j = 0 ; j < jsonArray1.length() ; j++){ 
      JsonObject jsonObject = jsonArray1.get(j); 
      String name = jsonObject.getAsString("name"); 
     } 
}