【问题标题】:For loop printing String only once when the condition is equal to 25当条件等于 25 时,for 循环打印 String 一次
【发布时间】:2017-08-23 21:33:45
【问题描述】:

我正在尝试使用 Facebook Graph API 打印出 JSON 中的一个对象。

这是我的代码:

try{
    JSONArray data = innerJson.getJSONArray("data");
    Log.d("innerDataLength", String.valueOf(data.length()));

    for (int i = 0; i<data.length(); i++) {
        String message = data.getJSONObject(i).getString("message");
        Log.d("message", message);
    }
} catch (JSONException e) {
    Log.d("exception", e.getMessage());
}

这是输出:

D/innerDataLength: 25
D/message: "blah blah blah"
D/exception: No value for message

如您所见,conditiondata.length() 是 25,那么为什么我只打印一次消息?

【问题讨论】:

    标签: android json for-loop facebook-graph-api jsonexception


    【解决方案1】:

    请注意,您会遇到异常:

    D/异常:消息没有价值

    表示JSONArray中的第二个对象没有message属性。貌似是可选的,所以需要先检查message属性是否存在。

    更新:

    try{
        JSONArray data = innerJson.getJSONArray("data");
        Log.d("innerDataLength", String.valueOf(data.length()));
    
        for (int i = 0; i < data.length(); i++) {
            JSONObject obj = data.getJSONObject(i);
            if (obj.has("message")) {
                String message = obj.getString("message");
                Log.d("message", message);
            }
            if (obj.has("story")) {
                String story= obj.getString("story");
                Log.d("story", story);
            }
        }
    } catch (JSONException e) {
        Log.d("exception", e.getMessage());
    }
    

    【讨论】:

    • 第二个有story 属性。能否请您给我获取messagestory 的代码?
    • 更新了答案。
    • 感谢代码,Olexiy。这里的限制只有 25 个.. 我怎样才能得到所有的帖子?
    • 尝试将limit 参数添加到您的网址,如下所述:stackoverflow.com/questions/29730526/…
    • 有一种叫做分页的东西,我们可以在其中获得previousnext 图表的链接。你知道如何访问它来浏览所有页面吗?
    【解决方案2】:

    innerJson.getJSONArray("data") 数组中的一些对象没有消息

    检查我所说的评论循环内的行并打印我将得到 0 到 24

    避免用try和catch包围解析消息的语句,以避免解析不包含消息的对象

    你也可以打印 data.getJSONObject(i).toString 来查看解析对象

    【讨论】:

      猜你喜欢
      • 2014-09-03
      • 2013-09-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-05
      • 1970-01-01
      • 2021-01-30
      相关资源
      最近更新 更多