我一直想知道如何在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不存在。
感谢您的帮助。
答案 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.
}
希望它有所帮助。