如何从Android中的String读取某些值

时间:2015-07-10 08:03:32

标签: java android arrays string

我正在开发一个Android应用程序,我将在线数据库中的结果读取为此形式的字符串:

{"success":1,"innerResult":[{"username":"raafat","password":"123"}]}

即使我有多个结果,我也只能读取用户名和密码值。例如,我需要返回一组用户名和另一组密码。

我尝试拆分字符串,但是当你有很多条目时,它会让人感到困惑。

2 个答案:

答案 0 :(得分:2)

使用Gson

第1步:创建响应数据bean。在您的情况下,您需要UsernamePassword的详细信息。

public class User {
    private String username;
    private String password;
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
}

第2步:解析JSON响应并使用Gson将其转换为您想要的bean。

String response = "{\"success\":1,\"innerResult\":[{\"username\":\"raafat\",\"password\":\"123\"}]}";
JSONObject jsonObject = new JSONObject(response);

if(jsonObject.has("innerResult")){
   Type type = new TypeToken<List<User>>() {}.getType();
   List<User> listUsers = new Gson().fromJson(jsonObject.getJSONArray("innerResult").toString(), type);
}

答案 1 :(得分:2)

你的字符串是Json格式,你可以尝试这样的事情:

try{
    JSONObject yourObject = new JSONObject(yourString);
    int resultCode = yourObject.getInt("success");
    JSONArray innerResult = yourObject.getJSONArray("innerResult");
    //you'll need to iterate through your array then
    List<String> userNames = new ArrayList<>();
    List<String> passwords = new ArrayList<>();
    for(int i =0 ; i < innerResult.length() ; i++){
        JSONObject user = innerResult.getJSONObject(i);
        userNames.add(user.getString("username"));
        passwords.add(user.getString("password"));
    }
}catch(JSONException e){
   e.printStackTrace();
}

或者您可以像GSon一样使用库!