【问题标题】:How to Read certain values from a String in Android [duplicate]如何在Android中从字符串中读取某些值[重复]
【发布时间】:2015-09-28 21:28:23
【问题描述】:

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

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

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

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

【问题讨论】:

标签: java android arrays string


【解决方案1】:

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

【讨论】:

    【解决方案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 这样的库!

    【讨论】:

    • 我还是不明白你为什么要把代码喂给这个僧侣
    • 我还是不明白为什么我是唯一被批评的人
    • 将“你”理解为复数形式。在西班牙语中,我们说“vosotros”。我不能在不触及周围管理员的敏感性的情况下重复 cmets。对不起。
    • 非常感谢巴斯蒂安。也许我的问题是微不足道的,但我对 java 完全陌生,你帮了很多忙。
    • 没问题!乐于助人
    猜你喜欢
    • 2016-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-05
    • 1970-01-01
    相关资源
    最近更新 更多