Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Android中使用Java和org.JSON迭代这个JSON数组?_Java_Android_Arrays_Json_Loops - Fatal编程技术网

如何在Android中使用Java和org.JSON迭代这个JSON数组?

如何在Android中使用Java和org.JSON迭代这个JSON数组?,java,android,arrays,json,loops,Java,Android,Arrays,Json,Loops,我的JSON字符串如下所示(包含在名为sJSON的字符串变量中): 我能够像这样解析第一个数组(使用Java并导入org.json): 返回预期结果,即284。我正在努力获取第二个项目数组,并遍历它们。我不确定我的JSON字符串是否格式错误,或者我是否试图以错误的方式访问它。以下是我尝试过的: JSONObject jsonPersonData = new JSONObject(arrJSON.get(1).toString()); 就我所知,我不知道如何循环第二个数组中的各个项目 编辑: 这

我的JSON字符串如下所示(包含在名为
sJSON
的字符串变量中):

我能够像这样解析第一个数组(使用Java并导入org.json):

返回预期结果,即284。我正在努力获取第二个项目数组,并遍历它们。我不确定我的JSON字符串是否格式错误,或者我是否试图以错误的方式访问它。以下是我尝试过的:

JSONObject jsonPersonData = new JSONObject(arrJSON.get(1).toString());
就我所知,我不知道如何循环第二个数组中的各个项目

编辑:

这一行似乎只解析方括号中的第一个字符串:

JSONArray arrJSON = new JSONArray(sJSON);

要么JSON错误(与上面的示例相同),要么它没有正确解析它?我通过对字符串进行拆分并将它们分别放入各自的
JSONArray
来解决这个问题,但我认为这不是最好的方法。

您应该使用
arrJson
对象访问数据,而不是使用它们的字符串结果创建新的jsonobject。

您想要这样的东西

JSONArray jsonArray = new JSONArray(sJSON);
JSONArray jsonPersonData = jsonArray.getJSONArray(1);
for (int i=0; i<jsonPersonData.length(); i++) {
    JSONObject item = jsonPersonData.getJSONObject(i);
    String name = item.getString("name");
    String surname = item.getString("surname");
}
JSONArray-JSONArray=新的JSONArray(sJSON);
JSONArray jsonPersonData=JSONArray.getJSONArray(1);

对于(int i=0;i您不应该使用JSONObject.toString。以下是迭代数组的方式:

for(int i=0;i<arrJSON.length();i++){
JSONObject json_data = jArray.getJSONObject(i);
String name =json_data.getString("name");
String surname =json_data.getString("surname"); 
}

for(int i=0;i您可以使用迭代器进行迭代,我还为您复制了一个示例JSON字符串,希望这对您有所帮助:

  //  { "drives":
    //[{"drives_id":"2","ip":"hq10m.backupexample.com","port":"4010","ftp_username":"NameSFTP","
    // ftp_password":"12345","permission":2,"drive_name":"dev"
    //,"drive_letter":"S","size":"1234","ma_mode":"0"},
    //{"drives_id":"3","ip":"hq6m.backupexample.com","port":"4206","ftp_username":"userSFTP"
//,"ftp_password":"456","permission":2,"drive_name":"Rashtesting"
//,"drive_letter":"P","size":"8","ma_mode":"0"}],"user_id":"8"}

      mi.setUser_id( (int) Long.parseLong(obj.get("user_id").toString()));
      JSONArray drivesarray= (JSONArray) obj.get("drives");
      Iterator<JSONObject> driveIterator=drivesarray.iterator();
      while(driveIterator.hasNext())
      {
          JSONObject driveJSON=driveIterator.next();
          client_drive_info drive=new client_drive_info();
          drive.setDrives_id((int) Long.parseLong(driveJSON.get("drives_id").toString()));
          drive.setIp(driveJSON.get("ip" ).toString());
          drive.setPort((int )Long.parseLong(driveJSON.get("port").toString()));
          drive.setSFTPusername(driveJSON.get("ftp_username").toString());
          drive.setSFTPpassword(driveJSON.get( "ftp_password").toString());
          drive.setPermission((int )Long.parseLong(driveJSON.get("permission").toString()));
          drive.setDrive_name(driveJSON.get("drive_name").toString());
          drive.setDrive_letter(driveJSON.get("drive_letter").toString());
          drive.setSize((int )Long.parseLong(driveJSON.get("size").toString()));

          mi.getDrives_info().add(drive);
      }
/{“驱动器”:
//[{“drives_id”:“2”,“ip”:“hq10m.backupexample.com”,“port”:“4010”,“ftp_用户名”:“NameSFTP”
//ftp_密码:“12345”,“权限”:2,“驱动器名称”:“dev”
//,“驱动器号”:“S”,“大小”:“1234”,“MAU模式”:“0”},
//{“drives_id”:“3”,“ip”:“hq6m.backupexample.com”,“port”:“4206”,“ftp_用户名”:“userSFTP”
//,“ftp_密码”:“456”,“权限”:2,“驱动器名称”:“Rashtesting”
//,“驱动器号”:“P”,“大小”:“8”,“内存模式”:“0”}],“用户id”:“8”}
mi.setUser_id((int)Long.parseLong(obj.get(“user_id”).toString());
JSONArray driversarray=(JSONArray)obj.get(“驱动器”);
迭代器driveIterator=drivesarray.Iterator();
while(driveIterator.hasNext())
{
JSONObject driveJSON=driveIterator.next();
client_drive_info drive=新的client_drive_info();
drive.setDrives_id((int)Long.parseLong(driveJSON.get(“drives_id”).toString());
drive.setIp(driveJSON.get(“ip”).toString());
drive.setPort((int)Long.parseLong(driveJSON.get(“port”).toString());
drive.setSFTPusername(driveJSON.get(“ftp_username”).toString();
drive.setsftpassword(driveJSON.get(“ftp_password”).toString();
drive.setPermission((int)Long.parseLong(driveJSON.get(“permission”).toString());
drive.setDrive_name(driveJSON.get(“drive_name”).toString());
drive.setDrive_letter(driveJSON.get(“drive_letter”).toString());
drive.setSize((int)Long.parseLong(driveJSON.get(“size”).toString());
mi.getDrives_info().add(驱动器);
}

< /代码>用更多信息更新原始帖子。递归一:您可能需要考虑使用<代码> jSnObjist.GeStGrn()/<代码>。
for(int i=0;i<arrJSON.length();i++){
JSONObject json_data = jArray.getJSONObject(i);
String name =json_data.getString("name");
String surname =json_data.getString("surname"); 
}
  //  { "drives":
    //[{"drives_id":"2","ip":"hq10m.backupexample.com","port":"4010","ftp_username":"NameSFTP","
    // ftp_password":"12345","permission":2,"drive_name":"dev"
    //,"drive_letter":"S","size":"1234","ma_mode":"0"},
    //{"drives_id":"3","ip":"hq6m.backupexample.com","port":"4206","ftp_username":"userSFTP"
//,"ftp_password":"456","permission":2,"drive_name":"Rashtesting"
//,"drive_letter":"P","size":"8","ma_mode":"0"}],"user_id":"8"}

      mi.setUser_id( (int) Long.parseLong(obj.get("user_id").toString()));
      JSONArray drivesarray= (JSONArray) obj.get("drives");
      Iterator<JSONObject> driveIterator=drivesarray.iterator();
      while(driveIterator.hasNext())
      {
          JSONObject driveJSON=driveIterator.next();
          client_drive_info drive=new client_drive_info();
          drive.setDrives_id((int) Long.parseLong(driveJSON.get("drives_id").toString()));
          drive.setIp(driveJSON.get("ip" ).toString());
          drive.setPort((int )Long.parseLong(driveJSON.get("port").toString()));
          drive.setSFTPusername(driveJSON.get("ftp_username").toString());
          drive.setSFTPpassword(driveJSON.get( "ftp_password").toString());
          drive.setPermission((int )Long.parseLong(driveJSON.get("permission").toString()));
          drive.setDrive_name(driveJSON.get("drive_name").toString());
          drive.setDrive_letter(driveJSON.get("drive_letter").toString());
          drive.setSize((int )Long.parseLong(driveJSON.get("size").toString()));

          mi.getDrives_info().add(drive);
      }