iphone json twitter веб-сервис вопрос - PullRequest
0 голосов
/ 30 августа 2011

Я использую json для загрузки таблицы в моем приложении из веб-службы Twitter, работает нормально при использовании функции поиска,

http://search.twitter.com/search.json?q=mobtuts&rpp=5

 the type of json response for the first one is: tenga: {"completed_in" = "0.076"; ...

но когда я использую функцию статусов,

[NSURL URLWithString: @ "http://twitter.com/statuses/user_timeline.json?id=hypercomputing"]];

 the type of json response for the second one is: tenga: (
    {
    contributors = "<null>";
    coordinates = "<null>";
    "created_at" = "Thu Aug 04 23:26:05 +0000 2011";...

результат от json другой, поэтому мое приложение не видит второй вызов как словарь после импорта из json, оно видит его как строку, [из-за "(" ??]

здесь код

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    
responseData = [[NSMutableData data] retain];
tweets = [NSMutableArray array];
NSURLRequest *request = [NSURLRequest requestWithURL:
//               [NSURL URLWithString:@"http://twitter.com/statuses/user_timeline.json?id=hypercomputing"]]; 
[NSURL URLWithString:@"http://search.twitter.com/search.json?q=mobtuts&rpp=5"]];// hypercomputing
//[NSURL URLWithString:@"http://twitter.com/statuses/public_timeline.json?id=hypercomputing"]]; 
[[NSURLConnection alloc] initWithRequest:request delegate:self];
    return YES;
}
  #pragma mark NSURLConnection delegate methods
 - (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {
[responseData setLength:0];
      }
    - (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
[responseData appendData:data];
     }

    - (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error {
  }



   - (void)connectionDidFinishLoading:(NSURLConnection *)connection {
[connection release];
NSString *responseString = [[NSString alloc] initWithData:responseData  encoding:NSUTF8StringEncoding];
[responseData release];

    NSLog(@"string: %@",responseString);

NSDictionary *results = [responseString JSONValue];

NSLog(@"tenga: %@",results);
//NSLog(@"tenga: %@",[results objectForKey:@"("] );



//NSArray * keys = [results allKeys]; //ensa


//NSLog(@"keys: %@",keys); //ensayo


NSArray *allTweets = [results objectForKey:@"results"];

//NSArray *allTweets = [results objectForKey:@"user"];

NSLog(@"user is: %@",allTweets);


//[viewController setTweets:allTweets];
[window addSubview:viewController.view];
[window makeKeyAndVisible];

 }

так как я могу убедиться, что получаю словарь от вызова json ?,

спасибо большое!

1 Ответ

0 голосов
/ 30 августа 2011

Вместо того, чтобы каждый раз ожидать словарь, рассмотрите возможность тестирования класса входящего объекта JSON и написания кода, который обрабатывает каждый случай.

Или, что еще важнее, напишите промежуточный веб-сервис, чтобы превратить JSON во что-то, что может распознавать ваше приложение.

Поскольку вы работаете с определенными API, предлагаемыми Twitter, вам придется ознакомиться с документацией, чтобы знать, чего ожидать, и соответствующим образом скорректировать свою реализацию. Это не тот случай, когда вы можете изменить данные в соответствии со своими потребностями, вы должны изменить обработку данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...