我正在开发一个Android应用程序,我将在线数据库中的结果读取为此形式的字符串:
{"success":1,"innerResult":[{"username":"raafat","password":"123"}]}
即使我有多个结果,我也只能读取用户名和密码值。例如,我需要返回一组用户名和另一组密码。
我尝试拆分字符串,但是当你有很多条目时,它会让人感到困惑。
答案 0 :(得分:2)
使用Gson
。
第1步:创建响应数据bean。在您的情况下,您需要Username
和Password
的详细信息。
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一样使用库!