2015-01-14 3 views
-1

У меня возникли проблемы с разбором моего объекта JSON в течение последних 6 часов. В моем коде, я раздел ответ JSON от сервера (который был сохранен в качестве объекта NSData), используя следующий метод:iOS: NSJSON Сериализация: неправильный код или неправильная структура JSON?

NSMutableDictionary * responseDataRaw = [NSJSONSerialization JSONObjectWithData:serverResponse options: kNilOptions error:nil]; 

И это структура NSMutableDictionary я могу NSLog:

{ 
Content =  (
      { 
     0 =    (
          { 
       DatePosted = "September 23, 2014 at 09:10pm"; 
       ID = 64; 
       MemberID = "Ken Ang"; 
       Message = "I won't be left out :D"; 
       PostNumber = 1; 
       Status = 1; 
       Subject = "Hello from US!"; 
       TopicID =      { 
        DatePosted = "September 23, 2014"; 
        Enabled = "<span class='label' style='background-color:#17A647; color:#fff'>Yes</span>"; 
        ForumID = 1; 
        FriendlyURL = "19-"; 
        ID = 19; 
        MemberID = 1; 
        Title = "Hello from US!"; 
        ViewCount = 288; 
       }; 
       UserID = 1; 
       Username = kenang; 
      } 
     ); 
     1 =    (
          { 
       DatePosted = "December 17, 2014 at 03:27pm"; 
       ID = 66; 
       MemberID = "Nobody know"; 
       Message = "Hai from Chech"; 
       PostNumber = 2; 
       Status = 1; 
       Subject = "Re: Hello from US!"; 
       TopicID =      { 
        DatePosted = "September 23, 2014"; 
        Enabled = "<span class='label' style='background-color:#17A647; color:#fff'>Yes</span>"; 
        ForumID = 1; 
        FriendlyURL = "19-"; 
        ID = 19; 
        MemberID = 1; 
        Title = "Hello from US!"; 
        ViewCount = 288; 
       }; 
       UserID = 15; 
       Username = admin; 
      } 
     ); 
     Forum = "Member Introduction"; 
     ForumID = 1; 
     ForumTopicTitle = "Hello from US!"; 
    } 
); 
Count = 2; 
} 

Затем я намерен сохранить значение «0» и «1» в качестве NSDictionary, используя следующий метод, но была вызвана ошибка во время выполнения:

NSArray * responseData = [responseDataRaw objectForKey:@"Content"]; 

for (id arrayItems in responseData) 
{ 
    NSMutableArray * validKeys = [NSMutableArray array]; 

    //Enumerate and collect the valid keys: only "0" and "1". So will do a numeric test. 
    for (id itemsInside in [arrayItems allKeys]) 
    { 
     NSScanner *scanner = [NSScanner scannerWithString:itemsInside]; 
     BOOL isNumeric = [scanner scanInteger:NULL] && [scanner isAtEnd]; 

     if (isNumeric) 
     { 
      [validKeys addObject:itemsInside]; 

     } 

} 


//Using the key to parse the info into our readable NSDictionary 
for (NSString * individualKey in validKeys) 
{ 
    NSDictionary * testPost = [arrayItems objectForKey:individualKey]; 
    .... 
    .... 
} 

Я не может сохранить значение в качестве NSDictionary на T он переменный testPost. Сообщение об ошибке, которое у меня есть, это

[__NSCFArray objectForKey:]: unrecognized selector sent to instance 0x170465040 

Кто-нибудь знает, что мне делать? Мне нужно сохранить значения «0» и «1» в качестве словаря, так как мне нужны элементы в них, чтобы позже вклеить в ячейку таблицы.

Справка!

+1

использовать этот сайт для проверки вашего json http://jsonlint.com/ – ErasmoOliveira

+0

@ErasmoOliveira Я проверял и его действительный JSON. – Marcus

+2

Если бы это было не так, json, он бы не смог проанализировать словарь @ErasmoOliveira – vikingosegundo

ответ

2

В сообщении об ошибке указано, что вы отправили objectForKey в экземпляр NSArray, но ваш код обрабатывает его как NSDictionary - посмотрите, в какой строке это происходит, а затем исследует объект в отладчике - вы увидите, где вы сделали неверное предположение.

Смежные вопросы