Не удается проанализировать JSON, отправленный SA_OAuthTwitterEngine / MGTwitterEngine

#iphone #ios #sdk #mgtwitterengine

#iPhone #iOS #sdk #mgtwitterengine

Вопрос:

Я разрабатываю приложение Twitter, но в представлении, где должна быть информация о зарегистрированном пользователе, я не могу проанализировать JSON, предоставленный [_engine getUserInformationFor:username]; . Я использую SBJSON и сообщает мне об этом, когда пытается его проанализировать:

2011-05-07 12:29:45.553 BirdieApp[7122:40b] -JSONValue failed. Error is: Unrecognised leading character at offset 0

Это код, который я использую:

 NSLog(@"loggedapi");
NSString *username = [_engine username];
NSString *userinfo = [_engine getUserInformationFor:username];
NSLog(@"user: %@%@", username, userinfo); NSArray *results = [userinfo JSONValue]; NSDictionary *first = [results objectAtIndex:0]; NSLog(@"screen name = %@", [first objectForKey:@"description"]);

Вывод, который [_engine getUserInformationFor:username]; выдает мне:

 
2011-05-07 12:29:46.281 BirdieApp[7122:40b] User Info Received: (
        {
        "contributors_enabled" = false;
        "created_at" = "Fri Sep 17 20:40:15  0000 2010";
        "default_profile" = true;
        "default_profile_image" = false;
        description = "iPhone developer and Photoshop designer. U30ddU30fcU30eb. I developed a web browser, it's called zad0xNET browser, search it in Cydia. Ofcourse this is a fake account!";
        "favourites_count" = 0;
        "follow_request_sent" = false;
        "followers_count" = 4;
        following = 0;
        "friends_count" = 1;
        "geo_enabled" = true;
        id = 191964939;
        "is_translator" = false;
        lang = es;
        "listed_count" = 0;
        location = "Castilla y LeU00f3n, EspaU00f1a";
        name = zad0xLOL;
        notifications = false;
        "profile_background_color" = C0DEED;
        "profile_background_image_url" = "http://a3.twimg.com/a/1304019356/images/themes/theme1/bg.png";
        "profile_background_tile" = false;
        "profile_image_url" = "http://a0.twimg.com/profile_images/1190671091/ProfilePhoto_normal.png";
        "profile_link_color" = 0084B4;
        "profile_sidebar_border_color" = C0DEED;
        "profile_sidebar_fill_color" = DDEEF6;
        "profile_text_color" = 333333;
        "profile_use_background_image" = true;
        protected = 0;
        "screen_name" = zad0xs1s;
        "show_all_inline_media" = true;
        "source_api_request_type" = 12;
        status =         {
            contributors = "";
            coordinates = "";
            "created_at" = "Sat May 07 07:42:18  0000 2011";
            favorited = false;
            geo = "";
            id = 66769811828514816;
            "in_reply_to_screen_name" = zad0xs1s;
            "in_reply_to_status_id" = "";
            "in_reply_to_user_id" = 191964939;
            place = "";
            "retweet_count" = 0;
            retweeted = false;
            source = "BirdieApp";
            "source_api_request_type" = 12;
            text = "@zad0xs1s sdjdjdd";
            truncated = 0;
        };
        "statuses_count" = 16;
        "time_zone" = Madrid;
        url = "http://www.pabloxweb.es";
        "utc_offset" = 3600;
        verified = false;
    }
  

Я думаю, что это JSON, но не уверен. Я также пробовал использовать URL, который дает twitter, но у меня тоже ничего не получилось. URL-адрес является http://api.twitter.com/1/users/show.json?screen_name=zad0xsis , где «zad0xsis» — это имя пользователя в Twitter.

Заранее спасибо !! 😉

Комментарии:

1. Это недопустимый json, извините.

2. Тогда любой способ разобрать его из api.twitter.com/1/users/show.json?screen_name=zad0xsis ? спасибо за ваш ответ 🙂

3. О, эта ссылка возвращает действительный json. Кажется, что-то не так с getUserInformationFor методом.

4. Я пытался воспользоваться ссылкой, но не могу заставить ее разобрать: ( Я получаю это 2011-05-07 13:15:20.351 BirdieApp[7833:40b] -JSONValue failed. Error is: Unrecognised leading character at offset 0 . Теперь я использовал это вместо GETUSERINFORMATION для: NSString *userinfo = [NSString stringWithFormat:@"http://api.twitter.com/1/users/show.json?screen_name=%@", username];

Ответ №1:

Hii. Вот хорошая ссылка на OAuth Twitter

В этом примере используется model для получения результата json в NSDictionary .Они вызвали метод getUsertimeLine . Вы можете вызвать свой собственный метод.

Ответ №2:

Мой опыт работы с Cocoa и JSON таков

  • Это просто не будет работать правильно…
  • или это не стоит всех проблем, чтобы разобрать это!

Возможно, вам было бы лучше использовать Twitter XML API

https://api.twitter.com/1/users/show.xml?screen_name=zad0xsis

Затем с помощью NSXMLParser для его анализа (на iPhone):http://ll.io/e17

или

NSXMLDocument (Mac):http://ll.io/ff0

Надеюсь, это поможет!

Комментарии:

1. ИМХО: синтаксический анализ XML — это ужас, особенно в Objective-C. Извините, но JSON — хороший формат, и имеющиеся библиотеки для синтаксического анализа json достаточно хороши, вам просто нужно знать, как их использовать.

2. Тогда есть какой-нибудь простой способ проанализировать JSON / XML, указанный в URL? 😉