Android studio不在for循环中执行代码

时间:2018-04-12 09:13:43

标签: android json

for循环中的代码未被执行。没有错误和崩溃,但它不起作用。数据的路径是正确的(因为我多次检查过)。我已经发布了整个方法来了解我在做什么以及我的结果应该是什么。我根本无法从for循环中获得结果。我的代码出了什么问题?

 @Override
    protected void onPostExecute(String s) {
        Toast.makeText(getContext(),"entered post",Toast.LENGTH_LONG).show();
        try {

            JSONObject jsonObject = new JSONObject(s);

            String status = jsonObject.getString("status");
            Toast.makeText(getContext(), status,Toast.LENGTH_LONG).show();
           if (status.equals("success")) {
               Toast.makeText(getContext(),"entered if",Toast.LENGTH_LONG).show();
                JSONArray data = new JSONArray();
                feedsList = new ArrayList<>();
               Toast.makeText(getContext(),"entered array",Toast.LENGTH_LONG).show();



               for (int i = 0; i < data.length(); i++)
                {
                    Toast.makeText(getContext(),"entered for",Toast.LENGTH_LONG).show();
                    JSONObject e = data.getJSONObject(i);
                    FeedItem item = new FeedItem();

                    item.setTitle(e.optString("name"));
                    item.setThumbnail(e.optString("image"));
                    item.setDes(e.optString("description"));
                    item.setFacts(e.optString("NutritionFacts"));
                    feedsList.add(item);


                    Log.d("name", item.getTitle());
                    Toast.makeText(getContext(),item.getTitle(),Toast.LENGTH_LONG).show();


                }}


        } catch (JSONException e) {
            e.printStackTrace();
        }
        Toast.makeText(getContext(),"post execution complete",Toast.LENGTH_LONG).show();
    }
}}

我的JSON数据(它的一部分,因为它真的很大)。我直到&#34;成功&#34;但无法进入数据&#34;。

{
"status": "success",
"data": [
    {
        "product_id": "92",
        "name": "Carrot Juice",

2 个答案:

答案 0 :(得分:1)

也许您已经初始化了空的JSON数组,并且您正在尝试实现无效的空数据循环。 试试这个:

JsonArray data = jsonObject.getJsonArray(NetworkKeys.arrayKey.toString);

尝试使用此功能,您将获得JSON数据,然后您的循环将起作用。

答案 1 :(得分:0)

您忘记正确初始化您的json数组,就像他们在评论中告诉您的那样。我的猜测是你应该:

在看到json示例后编辑:

更改您的

JSONArray data = new JSONArray();

有:

JSONArray data = new JSONArray(jsonObject.getJSONArray("data"));

这取决于你的json是如何制作的,它应该根据你获得“状态”的方式而有所不同,但我希望你能得到这个想法。