我正在为 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
不会起作用,因为没有唯一的变量可供搜索。例如,“数据”放置在响应字符串的开头和每次签入之前,但它放置在标记用户之前!
这是 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 ..
}