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",
答案 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是如何制作的,它应该根据你获得“状态”的方式而有所不同,但我希望你能得到这个想法。