如何从JSON获取数组

时间:2018-09-28 11:01:57

标签: java android json

我正在尝试从JSON对象获取用户列表,这是我的JSON响应:

{"users":[{"user":"David David","id_user":"10"},{"user":"Ale Camp","id_user":"14"}],"success":true}`

这是我的代码:

try {
    JSONObject jobj = new JSONObject(responseContent);
    JSONArray users = jobj.getJSONArray("users");
    String utilisateur = String.valueOf(users.get(Integer.parseInt("user")));
    Log.e("users",String.valueOf(utilisateur));
}
 catch (JSONException e1) {
         e1.printStackTrace();
}

但是应用程序因以下错误而崩溃:

  

java.lang.NumberFormatException:对于输入字符串:“ utilisateur”

6 个答案:

答案 0 :(得分:1)

这是因为与键user关联的值是String类型而不是Integer。可能是您打算使用密钥id_user。如果您打算真正使用user而不是删除解析部分:

String utilisateur = users.get("user");

答案 1 :(得分:1)

这是问题Integer.parseInt("user"),您无法将“用户”转换为整数。 如果要打印用户名,则应该执行以下操作:

更改此:

String utilisateur = String.valueOf(users.get(Integer.parseInt("user")));
    Log.e("users",String.valueOf(utilisateur));

使用:

for(int i=0;i<users.length();i++)
{
JsonObject job=users.getJSONObject(i);
     String utilisateur = job.getString("user");
        Log.e("users",utilisateur);
}

答案 2 :(得分:0)

您的值已经是字符串类型,因此您无需解析值

所以尝试

try {
    JSONObject jobj = new JSONObject(responseContent);
    JSONArray users = jobj.getJSONArray("users");
    String utilisateur = String.valueOf(users.getString("user"));
    Log.e("users",utilisateur);
}
 catch (JSONException e1) {
         e1.printStackTrace();
}

答案 3 :(得分:0)

尝试一下

    try {
     JSONObject jobj = new JSONObject(responseContent);
    JSONArray users = jobj.getJSONArray("users");

    for(i=0;i<users.length();i++){
    JSONObject jobj1 = users.getJSONObject(i);
    String user=jobj1.getString("user");
    String user_id=jobj1.getString("id_user");
    }
}
 catch (JSONException e1) {
         e1.printStackTrace();
}

让我知道是否可行

答案 4 :(得分:0)

请仔细阅读

try {
JSONObject jobj = new JSONObject(responseContent);
JSONArray users = jobj.getJSONArray("users");

for(int i =0;i<users.length();i++)
  {
  JSONObject user_details = users.get(i);
  String username =  user_details.getString("user");
  Log.e("users",""+username);
  }
}
catch (JSONException e1) {
     e1.printStackTrace();
}

答案 5 :(得分:0)

尝试一下...

 try {
        JSONObject jobj = new JSONObject(responseContent);
        JSONArray users = jobj.getJSONArray("users");
        for (int i = 0; i < users.length(); i++) {
            JSONObject obj = users.getJSONObject(i);
            String userName = obj.getString("user");
            String userId = obj.getString("id_user");

            Log.e("userName: ",userName);
            Log.e("userId: ",String.valueOf(userId));
        }
    }
    catch (JSONException e1) {
        e1.printStackTrace();
    }