如何管理 Facebook API 响应数据

问题描述 投票:0回答:1

我正在为 iPhone 开发一个应用程序,并将此 URL 发送到 Facebook: https://graph.facebook.com/search?type=checkin&access_token=ACCESS_TOKEN

Facebook 回复如下:

{
   "data": [
      {
         "id": "2081746282701",
         "from": {
            "name": "USER1",
            "id": "xxxxxxxxxx"
         },
         "place": {
            "id": "xxxxxxxxx",
            "name": "\u03a0\u03b1\u03bb\u03bb\u03ac\u03b4\u03b9\u03bf",
            "location": {
               "city": "xxxxxxxx",
               "country": "Greece",
               "latitude": xxxxx,
               "longitude":xxxxx
            }
         },
         "application": {
            "name": "Facebook for iPhone",
            "id": "6628568379"
         },
         "created_time": "2011-05-25T01:22:00+0000",
         "likes": {
            "data": [
               {
                  "id":"xxxxxx",
                  "name": TaggedUsers"
               },
               {
                  "id": "xxxxxx",
                  "name": "tagged user"
               }
            ]
         }
      },
      {
         "id": "xxxxxxx",
         "from": {
            "name": "UserWhich puplish this",
            "id": "740646984"
         },
         "tags": {
            "data": [
               {
                  "name": "XXXXXX",
                  "id": "xxxxxxxxxx"
               }
            ]
         },
         "place": {
            "id": "xxxxxxxxxxxxx",
            "name": "xxxxxxxx",
            "location": {
               "latitude": xxxxxx,
               "longitude": xxxxxx
            }
         },
         "application": {
            "name": "Facebook for Android",
            "id": "350685531728"
         },
         "created_time": "2011-05-23T17:18:54+0000",
         "likes": {
            "data": [
               {
                  "id": "xxxxxxx",
                  "name": "xxxxxxxxx"
               }
            ]
         }
      }
}

我的问题是如何管理此字符串以导出长纬度地点和签入的用户?我认为

NSCaseInsensitiveSearch
不会起作用,因为没有唯一的变量可供搜索。例如,“数据”放置在响应字符串的开头和每次签入之前,但它放置在标记用户之前!

ios facebook
1个回答
2
投票

这是 JSON:JavaScript 对象表示法。

您可以使用 json-framework 将其轻松解码为 NSDictionary 或 NSArray,具体取决于根元素。之后它是一个树状结构,具体取决于返回的 JSON。

提到的框架为 NSObject 提供了一个易于使用的类别,它提供了 JSONValue 方法。

解码您收到的 json 的示例:

NSString *myJson = @"...";
NSDictionary *decodedJson = [myJson JSONValue];

现在您可以使用快速枚举或直接访问(

objectForKey:
)来检索您感兴趣的数据。

NSArray *users = [decodedJson objectForKey:@"data"];

foreach(NSDictionary *user in users =) {
    NSLog(@"user's id: %@", [user objectForKey:@"id"]);
    NSDictionary *fromData = [user objectForKey:@"from"]);
    NSLog(@"user is from: %@", [fromData objectForKey:@"name"]);
    NSLog(@"user is from id: %@", [fromData objectForKey:@"id"]);
    // and so on ..
}
© www.soinside.com 2019 - 2024. All rights reserved.