sbjson を使用して、Twitter の GET trend/:woeid への呼び出しによって返される次の json を解析するときに発生する問題を理解しようとしています。
次の URL を使用しています: @"http://api.twitter.com/1/trends/1.json" すると、次の応答が返されます: (スペースを節約するために切り詰められています)
[
{
"trends": [
{
"name": "Premios Juventud",
"url": "http://search.twitter.com/search?q=Premios+Juventud",
"query": "Premios+Juventud"
},
{
"name": "#agoodrelationship",
"url": "http://search.twitter.com/search?q=%23agoodrelationship",
"query": "%23agoodrelationship"
}
],
"as_of": "2010-07-15T22:40:45Z",
"locations": [
{
"name": "Worldwide",
"woeid": 1
}
]
}
]
名前とURLを解析して表示するために使用しているコードは次のとおりです。
NSMutableString *content = [[NSMutableString alloc] initWithBytes:[responseData bytes] length:[responseData length] encoding:NSUTF8StringEncoding];
[content replaceCharactersInRange:NSMakeRange(0, 1) withString:@""];
[content replaceCharactersInRange:NSMakeRange([content length]-1, 1) withString:@""];
NSLog(@"Content is: %@", content);
SBJsonParser *parser = [[SBJsonParser alloc] init];
NSDictionary *json = [parser objectWithString:content];
//NSArray *trends = [json objectForKey:@"trends"];
NSArray *trends = [json objectForKey:@"trends"];
for (NSDictionary *trend in trends)
{
[viewController.names addObject:[trend objectForKey:@"name"]];
[viewController.urls addObject:[trend objectForKey:@"url"]];
}
[parser release];
これは、現在非推奨となっている Twitter の GET トレンド コールを対象としていたため、破損しているサンプル コードです。コードは、最初の「[」と最後の「]」を手動で削除した場合にのみ機能します。ただし、これらの文字を応答から削除しないと、パーサーは1 つのNSString 要素の NSArray を返します: json 応答です。
この応答を正しく解析するにはどうすればよいですか。前もって感謝します。