【问题标题】:How to get array from JSON [duplicate]如何从 JSON 中获取数组 [重复]
【发布时间】:2026-02-24 05:50:02
【问题描述】:

我正在尝试从 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”

【问题讨论】:

    标签: java android json


    【解决方案1】:

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

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

    【讨论】:

    • 因为我收到错误消息说 JSONArray 中的 get(int) 不能应用于 (java.lang.String)
    【解决方案2】:

    这是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);
    }
    

    【讨论】:

      【解决方案3】:

      你的值已经是字符串类型,所以你不需要解析值

      所以试试

      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();
      }
      

      【讨论】:

        【解决方案4】:

        试试这个,

            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();
        }
        

        让我知道这是否有效

        【讨论】:

          【解决方案5】:

          请通过这些

          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();
          }
          

          【讨论】:

            【解决方案6】:

            试试这个...

             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();
                }
            

            【讨论】: