Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/218.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android从json获取数据并进行排序 我正在尝试从json获取数据。我可以在第一状态获取数据 但如何获取“升序”和“降序”数据并在listview中的另一个活动上显示它呢_Java_Android_Json - Fatal编程技术网

Java Android从json获取数据并进行排序 我正在尝试从json获取数据。我可以在第一状态获取数据 但如何获取“升序”和“降序”数据并在listview中的另一个活动上显示它呢

Java Android从json获取数据并进行排序 我正在尝试从json获取数据。我可以在第一状态获取数据 但如何获取“升序”和“降序”数据并在listview中的另一个活动上显示它呢,java,android,json,Java,Android,Json,这是我的Json [{"category_name":"Food","filter_type":"Sort by","field_name":"","type":"VALUE","table_name":"","item_list":["Ascending","Descending"]} 这是我的Java代码 if (jsonStr != null) { try { foods = new JSONArray(jsonStr); // loopin

这是我的Json

[{"category_name":"Food","filter_type":"Sort by","field_name":"","type":"VALUE","table_name":"","item_list":["Ascending","Descending"]}
这是我的Java代码

if (jsonStr != null) {
    try {

        foods = new JSONArray(jsonStr);


        // looping through All Contacts
        for (int i = 0; i < foods.length(); i++) {
            JSONObject c = foods.getJSONObject(i);

            if(c.getString("category_name").equals("Food")) {

                String category_name = c.getString(TAG_CATEGORY_NAME);
                String table_name = c.getString(TAG_TABLE_NAME);
                String item_list = c.getString(TAG_ITEM_LIST);

                // tmp hashmap for single contact
                HashMap<String, String> contact = new HashMap<String, String>();

                // adding each child node to HashMap key => value
                contact.put(TAG_CATEGORY_NAME, category_name);
                contact.put(TAG_TABLE_NAME, table_name);
                contact.put(TAG_ITEM_LIST, item_list);

                // adding contact to contact list
                foodlistfilter.add(contact);

            }
        }
    } catch (JSONException e) {
        e.printStackTrace();
    }
} else {
    Log.e("ServiceHandler", "Couldn't get any data from the url");
}
if(jsonStr!=null){
试一试{
食品=新JSONArray(jsonStr);
//通过所有触点循环
对于(int i=0;ivalue
联系人。放置(标签、类别、名称);
contact.put(标签、表格名称、表格名称);
联系人。放置(标签项目列表、项目列表);
//将联系人添加到联系人列表
foodlistfilter.add(联系人);
}
}
}捕获(JSONException e){
e、 printStackTrace();
}
}否则{
Log.e(“ServiceHandler”,“无法从url获取任何数据”);
}

我正试图学习本教程,但我仍然没有完全理解。

JSONObject c
获取
JSONArray
简单地写下:

JSONArray itemList = c.getJSONArray(name);
然后可以像其他数组一样遍历该数据

for (int i = 0; i < itemList.length(); i++) {
  // do something
}
for(int i=0;i
让我解释一下

[意思是它是一个数组。 {是一个对象

在您的例子中,它是一个数组,其中包含一个名为category_name、filter_type和field_name.type和table_name的-JSONObject,以及一个名为object item_list的新jsonarray

如何解析这个字符串

以下是一个例子:

String str = "[{"category_name":"Food","filter_type":"Sort by","field_name":"","type":"VALUE","table_name":"","item_list":["Ascending","Descending"]}";

JSONArray jsonArray = new JSONArray(str);
//now it holds the JSONObject.
for (int i = 0; i<= jsonArray.length(); i++) {
 //now we loop through and get the jsonObject
 JSONObject jsonObj = new JSONObject(jsonArray.getJsonObject(i));
 //now it contains your data.
 Log.d("Category_nameValue=", jsonObj.getString("category_name"));
 //now we want to get the array from the item_list. 
 JSONArray itemList = new JSONArray(jsonObj.getString("item_list")); 
 //now itemList.getString(1);  === Ascending while itemList.getString(2) == Descending



 //now itemList contains several new objects which can also be looped as the parent one.
}
String str=“[{”category_name:“Food”,“filter_type:“Sort by”,“field_name:”,“type:“VALUE”,“table_name:”,“item_list:[“升序”,“降序”]}”;
JSONArray JSONArray=新JSONArray(str);
//现在它保存了JSONObject。

对于(inti=0;i如果您是新手,我建议您考虑使用Gson将Json响应直接解析到java实体类,这样您就可以避免手动解析所有响应

您的JSON响应

if (jsonStr != null) {
    try {

        foods = new JSONArray(jsonStr);


        // looping through All Contacts
        for (int i = 0; i < foods.length(); i++) {
            JSONObject c = foods.getJSONObject(i);

            if(c.getString("category_name").equals("Food")) {

                String category_name = c.getString(TAG_CATEGORY_NAME);
                String table_name = c.getString(TAG_TABLE_NAME);
                String item_list = c.getString(TAG_ITEM_LIST);

                // tmp hashmap for single contact
                HashMap<String, String> contact = new HashMap<String, String>();

                // adding each child node to HashMap key => value
                contact.put(TAG_CATEGORY_NAME, category_name);
                contact.put(TAG_TABLE_NAME, table_name);
                contact.put(TAG_ITEM_LIST, item_list);

                // adding contact to contact list
                foodlistfilter.add(contact);

            }
        }
    } catch (JSONException e) {
        e.printStackTrace();
    }
} else {
    Log.e("ServiceHandler", "Couldn't get any data from the url");
}
[{“类别名称”:“食品”、“过滤器类型”:“排序依据”、“字段名称”:“类型”:“值”、“表名称”:“项目列表”:[“升序”、“降序”]}
表示响应的实体

if (jsonStr != null) {
    try {

        foods = new JSONArray(jsonStr);


        // looping through All Contacts
        for (int i = 0; i < foods.length(); i++) {
            JSONObject c = foods.getJSONObject(i);

            if(c.getString("category_name").equals("Food")) {

                String category_name = c.getString(TAG_CATEGORY_NAME);
                String table_name = c.getString(TAG_TABLE_NAME);
                String item_list = c.getString(TAG_ITEM_LIST);

                // tmp hashmap for single contact
                HashMap<String, String> contact = new HashMap<String, String>();

                // adding each child node to HashMap key => value
                contact.put(TAG_CATEGORY_NAME, category_name);
                contact.put(TAG_TABLE_NAME, table_name);
                contact.put(TAG_ITEM_LIST, item_list);

                // adding contact to contact list
                foodlistfilter.add(contact);

            }
        }
    } catch (JSONException e) {
        e.printStackTrace();
    }
} else {
    Log.e("ServiceHandler", "Couldn't get any data from the url");
}
公共类MyEntity{
字符串类别名称;
字符串过滤器(U型);
字符串字段名称;
字符串类型;
字符串表名称;
字符串[]项列表;
//接受者/接受者。。。
}
解析响应

if (jsonStr != null) {
    try {

        foods = new JSONArray(jsonStr);


        // looping through All Contacts
        for (int i = 0; i < foods.length(); i++) {
            JSONObject c = foods.getJSONObject(i);

            if(c.getString("category_name").equals("Food")) {

                String category_name = c.getString(TAG_CATEGORY_NAME);
                String table_name = c.getString(TAG_TABLE_NAME);
                String item_list = c.getString(TAG_ITEM_LIST);

                // tmp hashmap for single contact
                HashMap<String, String> contact = new HashMap<String, String>();

                // adding each child node to HashMap key => value
                contact.put(TAG_CATEGORY_NAME, category_name);
                contact.put(TAG_TABLE_NAME, table_name);
                contact.put(TAG_ITEM_LIST, item_list);

                // adding contact to contact list
                foodlistfilter.add(contact);

            }
        }
    } catch (JSONException e) {
        e.printStackTrace();
    }
} else {
    Log.e("ServiceHandler", "Couldn't get any data from the url");
}
Gson-Gson=new-Gson();
MyEntity MyEntity=gson.fromJson(响应,MyEntity.class);
最后,要发送数据,请使用附加功能启动新活动

Intent Intent=新的Intent(这是另一个activity.class);
intent.putExtra(“额外数据”,myEntity.getCategoryName());
星触觉(意向);
现在,您可以恢复另一个活动中的额外数据

Intent-Intent=getIntent();
String categoryName=intent.getStringExtra(“额外数据”);

您可以使用ArrayAdapter填充列表视图:

谢谢您的解释。但我的意思不是对数据进行排序。如果您看到项目列表,则有两个数据(升序和降序)在数组中。我想要的是获取数据,并在listview中的另一个活动中显示。非常感谢:D。现在我要做的就是从意图中列出一个列表,对吗。你能给你的答案添加一些解释吗?只有代码的答案(有时)很好,但代码+解释的答案(大多数时候)更好