我得到android的双jsonarray提取并没有得到结果返回

问题描述:

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代码中进行解析? –

你是不是解析响应正确。 记住“[”显示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

你的第一线工作的后端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"); 
} 

你可以试试吗?

有两个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"); 
     } 
}