【问题标题】:org.json.JSONException: No value for resultsorg.json.JSONException:没有结果值
【发布时间】:2016-02-04 17:57:21
【问题描述】:

我正在尝试使用 PHP 将我的服务器中的一些数据解析到使用 JSONObject 和 JSONArrays 的 Android Studio 上的 ListView 中,并且在尝试将 JSON 放入错误为“否”的对象时,在 for 循环中出现错误尽管之前输出了 JSON 数组并在那里显示了数据,但结果的值'。

循环:

Log.d("json: ", result);

JSONObject jsonObject = new JSONObject(result);
JSONArray jsonArray = jsonObject.getJSONArray("results");

for (int i = 0; i<1; i++){//<jsonArray.length()-1

    JSONObject getObj = jsonArray.getJSONObject(i);
    JSONObject classObj = getObj.getJSONObject("results");

    Classes dailyClasses = new Classes();
    dailyClasses.setClass_id("" + classObj.getString("id"));
    dailyClasses.setClass_name("" + classObj.getString("name"));
    dailyClasses.setClass_room("" + classObj.getString("room"));
    dailyClasses.setClass_day("" + classObj.getString("day"));
    dailyClasses.setClass_time("" + classObj.getString("time"));

    classList.add(dailyClasses);
}

错误:

02-04 17:45:48.830 23024-23047/com.example.cameron.projectapp W/System.err: org.json.JSONException: No value for results

那一行的“结果”是我的 JSONArray 的名称: JSONObject classObj = getObj.getJSONObject("results");

我是否遗漏了一些非常明显的东西?

【问题讨论】:

  • 对不起,我忘了。 {"results":[{"id":"5","name":"Database Driven Websites","room":"HA LECTURE THEATRE","day":"Thursday","time":"09: 00:00","course":"软件工程"},{"id":"6","name":"数据库驱动的网站","room":"CM026","day":"Thursday", "time":"10:00:00","course":"软件工程"},{"id":"7","name":"企业应用开发","room":"CM011"," day":"Thursday","time":"11:00:00","course":"软件工程"}]}

标签: java php android json


【解决方案1】:

现在你已经得到了数组,你只需要单独的数组,不需要再次获取数组,因为它不在那里。

像这样改变for循环

for (int i = 0; i<jsonArray.length(); i++){
    JSONObject classObj = jsonArray.getJSONObject(i);

    Classes dailyClasses = new Classes();
    dailyClasses.setClass_id("" + classObj.getString("id"));
    dailyClasses.setClass_name("" + classObj.getString("name"));
    dailyClasses.setClass_room("" + classObj.getString("room"));
    dailyClasses.setClass_day("" + classObj.getString("day"));
    dailyClasses.setClass_time("" + classObj.getString("time"));

    classList.add(dailyClasses);
}

【讨论】:

  • 啊,解决了这个问题。但是现在我遇到了另一个错误: ArrayAdapter adapter = new ArrayAdapter(getApplicationContext(), R.layout.activity_daily, classList);错误:E/ArrayAdapter:您必须为 TextView 提供资源 ID
  • 错误:E/ArrayAdapter:您必须为 TextView 提供资源 ID 抱歉,我在粘贴之前单击了添加评论。
  • 您需要使用自定义适配器,因为您有一个自定义对象要显示。普通 ArrayAdapter 不知道要从对象中显示什么,错误也意味着它需要一个文本视图来显示数据。我会高度建议您在此处使用自定义适配器。您可以通过这种方式控制列表项视图。
  • 啊,好的。非常感谢。
【解决方案2】:

试试这个

 for (int i = 0; i<1; i++){//<jsonArray.length()-1

            JSONObject classObj = jsonArray.getJSONObject(i);


            Classes dailyClasses = new Classes();
            dailyClasses.setClass_id("" + classObj.getString("id"));
            dailyClasses.setClass_name("" + classObj.getString("name"));
            dailyClasses.setClass_room("" + classObj.getString("room"));
            dailyClasses.setClass_day("" + classObj.getString("day"));
            dailyClasses.setClass_time("" + classObj.getString("time"));

            classList.add(dailyClasses);
        }

【讨论】:

    猜你喜欢
    • 2016-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多