如何在android中解析简单的JSON数组?

时间:2016-01-05 22:43:42

标签: java android arrays json

我一直想知道如何在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不存在。

感谢您的帮助。

5 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

试试这个

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 :(得分:0)

使用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();

答案 3 :(得分:0)

创建自定义对象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();
    }
}

答案 4 :(得分:0)

做这样的事情:

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.

}

希望它有所帮助。