【问题标题】:How to parse simple JSON Array in android?如何在android中解析简单的JSON数组?
【发布时间】:2016-01-05 22:43:42
【问题描述】:

我一直想知道如何在android中解析JSON数组?

我有一个这样的 json 对象:[{"ID":"1","email":"email@mail.mail","password":"password"},{"ID":"2","email":"test@test.com","password":"passward"}]

但我找不到如何解析它,我想访问数据,以便获得第一封邮件或第二个 id。

我尝试了大约 40 种不同的解决方案,但都没有成功。

我上次尝试是这样的:

private void showJSON(String json){
        try {
            JSONArray jArray = new JSONArray(json);
            String JsonString = jArray["ID"];
            tv.append(JsonString);

        } catch (JSONException e) {e.printStackTrace();}
    }

但它需要一个数组而不是 json 数组。还没找到怎么转成数组呢。

我也试过这个:

for (int i = 0; i < jsonarray.length(); i++) {
    JSONObject jsonobject = jsonarray.getJSONObject(i);
    String name = jsonobject.getString("email");
}

但 getJSONObject 不存在。

感谢您的帮助。

【问题讨论】:

  • "但 getJSONObject 不存在" -- sure it does。据推测,jsonarray 不是JSONArray。使用 Gson、Jackson 或其他更现代的 JSON 解析库可能会更开心。

标签: java android arrays json


【解决方案1】:

试试这个

private void showJSON(String json){
    try{
    JSONArray jsonArray = new JSONArray(json);
     for (int i = 0; i < jsonArray.length(); i++) {

       String id[i] = jsonArray.getJSONObject(i).getString("id");
       String email[i] = jsonArray.getJSONObject(i).getString("email");
     }
     }
    catch (JSONException e) {
                // Log.d("JSONException", e.toString());
            }
     }

【讨论】:

    【解决方案2】:

    使用 gson 将数组反序列化回对象。 https://sites.google.com/site/gson/gson-user-guide

    【讨论】:

      【解决方案3】:

      使用 Gson 很简单: 首先,您创建类 User:

      public class User
      {
      private String ID;
      private String email;
      private String password;
      }
      

      然后创建 UserStringJson 类:

      public class UserStringJson{
      ArrayList<User> userArrays = new ArrayList<User>();
      }
      

      最后,使用 gson:

      Gson gson = new Gson();
      UserStringJson userStringJson = new UserStringJson();
      userStringJson = gson.fromJson(jsonstring,
                          UserStringJson.class);
      String email = userStringJson.getuserArrays().get(0).getEmail();
      

      【讨论】:

        【解决方案4】:

        创建自定义对象User

        public class User {
            public String ID;
            public String email;
            public String password;
        }
        

        使用这个类变成showJson()方法:

        private void showJSON(String json) {
            try {
                List<User> userList = new ArrayList<>();
        
                JSONArray jsonArray = new JSONArray(json);
                for (int i = 0; i < jsonArray.length(); i++) {
                    JSONObject jsonObject = jsonArray.getJSONObject(i);
                    User user = new User();
                    user.ID = jsonObject.getString("id");
                    user.email = jsonObject.getString("email");                 user.password = jsonObject.getString("password");
                    userList.add(user);
                }
            } catch (JSONException e) {
                e.printStackTrace();
            }
        }
        

        【讨论】:

          【解决方案5】:

          做这样的事情:

          JSONArray arr= new JSONArray("json string");
          for(int i=0;i<arr.length();i++){
          JSONObject obj= arr.getJSONObject(i);
          // Now use this obj to get desired values.
          int ID= Integer.parseInt(obj.getString("ID"))// or use getInt method
          // Similarly you can do for the rest.
          
          }
          

          希望对你有帮助。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2013-04-22
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2015-04-16
            • 1970-01-01
            • 2016-01-28
            • 2013-10-22
            相关资源
            最近更新 更多