0

我的英语不是最好的,但我会尽力解释我想要什么。所以,我们有一个大 json,里面有很多数据,现在因为服务器不能同时显示所有数据,这个大 json 里面会有多个指向小 json 的链接,比如当有 20 条评论时页面,然后有一个“显示更多评论”按钮。我的问题是我不知道如何做到这一点,如何请求较小的 json,然后解析它。另一个问题是如何解析一个在末尾链接到另一个 json 的 json,就像从 graph api 请求一个 json 并且最后它有

[paging] => stdClass Object
(  
    [previous] => https://graph.facebook.com/$group_id$/feed?access_token=$valid_token$&__paging_token=$paging_token$&__previous=1
    [next] => https://graph.facebook.com/$group_id$/feed?access_token=$valid_token$&limit=25&until=1375310522&__paging_token=$paging_token$
)

当打开 [next] 的链接时,它会显示来自该组的更多帖子,然后在其末尾再次出现下一个链接。至于第一个问题,我有一个来自 facebook graph api 评论的更长的例子

[comments] => stdClass Object
(
[data] => Array
(
    [0] => stdClass Object
    (
        [id] => 53575265890127
        [from] => stdClass Object
        (
            [name] => Pop Dan
            [id] => 10000897827962
        )
    [message] => Random message
    [can_remove] => 1
    [created_time] => 2013-08-18T20:01:44+0000
    [like_count] => 0
    [user_likes] => 
    )
    ... more coments...
[paging] => stdClass Object
    (
        [cursors] => stdClass Object
        (
            [after] => NTM1ODIxODE5ODA2NTQ0
            [before] => NTM1NzUyNjU2NDgwMTI3
        )
        next] => https://graph.facebook.com/$group_id$_$post_id$/comments?access_token=$accestoken$&limit=25&after=NTM1ODIxODE5ODA2NTQ0
    )
)

在那里,我想继续从 [next] 解析 json,然后在同一个 html 页面中打印它,在评论之间没有任何中断或任何内容。谢谢 ;)

4

1 回答 1

0

一些细节取决于您用于查询图形 api 的语言。

图 api 返回的 Json 可以由 json 数组和 json 对象组成。Json 对象可以进一步具有命名值实体

如果您在 android 中执行此操作,那么首先您必须首先从响应中获取内部 json 对象。你可以这样做

GraphObject go  = response.getGraphObject();
                        JSONObject  jso = go.getInnerJSONObject();

现在要从 json 中获取一个对象,您可以使用

jso.getJSONObject("object_name");

并获取 json 数组,您可以使用

jso.getJSONArray("array_name")

其他语言会有类似的界面

对 json 的一般理解参考这个链接

关于您的第二个问题,您应该了解 next 只是对图形节点的另一个查询,但具有不同的参数。如何设置参数取决于 api,但在 Android 中,您可以按如下方式设置参数

Bundle params=r.getParameters();
    params.putString("offset", ""+25);

r.setParameters(params);

r 是 Request 类型的对象

于 2013-08-20T06:17:17.620 回答