我得到的数据是json格式的,比如
{"Users":[
{"category_id":"1","user_email":"a@a.com"},
{"category_id":"5","user_email":"a@b.com"},
{"category_id":"1","user_email":"a@c.com"},
{"category_id":"5","user_email":"a@d.com"},
{"category_id":"3","user_email":"a@d.com"}]}
现在我的问题是,在android中是否可以根据category\u id过滤这个json例如,如果我从微调器中选择1,那么它应该返回包含category\u id=1示例的数据
{"Users":[{"category_id":"1","user_email":"a@a.com"},
{"category_id":"1","user_email":"a@c.com"}]}
如果选择3,则应返回满足类别id=3的用户
{"Users":[
{"category_id":"3","user_email":"a@d.com"}]}
我只想知道android中是否有可用的方法,以便我可以轻松地过滤
数据。
最佳答案
首先,您需要在活动中创建变量
//URL to get JSON
private static String url = "your url to parse data";
//JSON Node Names
private static final String TAG_USERS = "users";
private static final String TAG_CATEGORY_ID = "category_id";
private static final String TAG_USER_EMAIL = "user_email";
// Data JSONArray
JSONArray users = null;
//HashMap to keep your data
ArrayList<HashMap<String, String>> userList;
在oncreate()函数中实例化用户列表
userList = new ArrayList<HashMap<String, String)>>();
然后需要分析数据并在doinbackground()函数中填充这个arraylist
//Create service handler class instance
ServiceHandler sh = new ServiceHandler();
//Url request and response
String jsonStr = sh.makeServiceCall(url, ServiceHandler.GET);
Log.d("Response: ", "> " + jsonStr);
if(jsonStr != null) {
try {
JSONObject jsonObj = new JSONObject(jsonStr);
//Get Json Array Node
users = jsonObj.getJSONArray(TAG_USERS);
// Looping through all data
for(int i = 0; i < users.length(); i++) {
JSONObject u = users.getJSONObject(i);
String category_id = u.getString(TAG_CATEGORY_ID);
String user_email = u.getString(TAG_USER_EMAIL);
// Temporary HashMap for single data
HashMap<String, String> user = new HashMap<String, String>();
// Adding each child node to Hashmap key -> value
user.put(TAG_CATEGORY_ID, category_id);
user.put(TAG_USER_EMAIL, user_email);
//Adding user to userList
userList.add(user);
}
}catch (JSONException e) {
e.printStackTrace();
}
} else {
Log.e("ServiceHandler", "Couldn't get any data from url");
}
现在您的数据存储在用户列表中。你可以随意使用你的用户列表。要获取列表中的category\u id字段,可以使用以下语法
// i being the counter of your loop
String catId = userList.get(i).get("category_id");
if(catId == 3) {
... your code
}
关于android - 如何在Android中过滤来自Json的数据?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25249412/