1

在搜索了很多没有结果之后,我终于决定在这里问这个问题。

这是此 Facebook 博客文章的摘录:https ://developers.facebook.com/blog/post/592/

{
 . . .
      "story": "Dhiren Patel likes Marmot.",
      "story_tags": {
        "19": [
          {
            "id": 101961456910,
            "name": "Marmot",
            "offset": 19,
            "length": 6
          }
        ],
        "0": [
          {
            "id": 1207059,
            "name": "Dhiren Patel",
            "offset": 0,
            "length": 12
          }
        ]
      }, 
 . . .
}

我使用的是上面链接的博客中的示例,但本质上,使用 FB Graph API 时的数据集是相同的。现在,我知道如何解析嵌套和所有内容JSONObjectsJSONArrays但我对这种数据一无所知。示例中的190由嵌套offset标签确定,并随帖子而变化。我如何解释未知的 JSON 标签和代码以获取其中的信息?

4

2 回答 2

4

据我了解,您遇到的问题是您不知道如何获取密钥,这些密钥是根据帖子或其他内容动态生成的(例如在 json: 19, 0中)。以下是您应该解析此 JSON 的方式:

JSONObject mStoryTags = mMainObj.getJSONObject("story_tags");
if(mStoryTags != null){
    Iterator<Object> keys = mStoryTags.keys();
    while(keys.hasNext()){
        String id = String.valueOf(keys.next()); // This value represent 19
        JSONArray mTag = mStoryTags.getJSONArray(id);
        if(mTag != null){
            for(int i = 0; i < mTag.length();i++){
                JSONObject mElem = mTag.getJSONObject(i);
                if(mElem != null){
                    int objectId = mElem.getInt("id"); // value: 101961456910
                    // and etc.
                }
            }
        }
    }
}

希望这对遇到同样问题的人有所帮助!:)

于 2013-07-17T14:27:53.550 回答
0

如果您有一个代表上述“story_tags”范围的 JSONObject,您应该能够通过以下方式遍历各个标签:

for (String key : storyTagsJSON.keys()) {
    JSONObject tagJSON = storyTagsJSON.optJSONObject(key);
    ...
于 2012-10-18T17:37:10.843 回答