经过大量搜索后没有结果,我终于决定在这里提出这个问题了。
这是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时的数据集是相同的。现在,我知道如何使用嵌套和所有来解析JSONObjects
以及JSONArrays
。但我对这类数据毫无头绪。示例中的 19 和 0 由嵌套的offset
标记确定,并从发布到发布更改。如何解释未知的JSON标记和代码以获取其中的信息?
答案 0 :(得分: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.
}
}
}
}
}
希望这有助于任何有同样问题的人! :)
答案 1 :(得分:0)
如果你有一个代表上面“story_tags”范围的JSONObject,你应该可以用以下代码遍历各个标签:
for (String key : storyTagsJSON.keys()) {
JSONObject tagJSON = storyTagsJSON.optJSONObject(key);
...