NSJSONSerialization не создает пары ключевых значений - PullRequest
2 голосов
/ 31 декабря 2011

Я использую новую функцию iOS 5 для анализа JSON, и я понятия не имею, почему я не получаю никаких пар ключ-значение. «aStr» (строковое представление данных) помещает правильный JSON в окно вывода, но я ничего не получаю в «dicData», и также нет ошибки.

Любая помощь очень ценится.

Это то, что я использую

NSError *error = nil;
    NSData *data = [NSData dataWithContentsOfURL:[NSURL        URLWithString:@"http://www.macscandal.com/?json=get_post&post_id=436"]];

NSString* aStr;
aStr = [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding];

//NSLog(@"data = %@",aStr);
NSDictionary *dicData = [NSJSONSerialization
                           JSONObjectWithData:data
                           options:NSJSONReadingAllowFragments
                           error:&error];
//NSLog(@"error = %@",error);
NSString *title = [dicData objectForKey:@"title"];

1 Ответ

1 голос
/ 31 декабря 2011

Ваш JSON отформатирован следующим образом:

{
  "status": "ok",
  "post": {
    "id": 436,
    "type": "post",
    "slug": "foxconn-likely-to-get-assembly-contract-for-apple-tv-set",
    "url": "http:\/\/www.macscandal.com\/index.php\/2011\/12\/28\/foxconn-likely-to-get-assembly-contract-for-apple-tv-set\/",
    "status": "publish",
    "title": "Foxconn Likely to get Assembly Contract for Apple TV Set",
...

Я не использовал NSJSONSerialization, но просто следуя естественному анализу JSON, вот как я хотел бы его получить.

NSDictionary *dicData = [NSJSONSerialization
                           JSONObjectWithData:data
                           options:NSJSONReadingAllowFragments
                           error:&error];

NSDictionary *postData = [dicData objectForKey:@"post"];
NSString *title = [postData objectForKey:@"title"];

РЕДАКТИРОВАТЬ

Просто простой метод проверки:

-(void)check{

    NSError *error = nil;
    NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://www.macscandal.com/?json=get_post&post_id=436"]];

    NSDictionary *dicData = [NSJSONSerialization
                             JSONObjectWithData:data
                             options:NSJSONReadingAllowFragments
                             error:&error];

    NSDictionary *postData = [dicData objectForKey:@"post"];
    NSString *title = [postData objectForKey:@"title"];

    NSLog(@"%@", title);
}
...