2016-06-15 3 views
0

У меня есть набор данных JSON, который был обработан.Проверка массива нулевой длины из набора JSON

Если данные содержат записи он выглядит следующим образом:

dictData: { 
    Recordset =  (
       { 
      Record = (
           { 
        MyDate = "2016-06-15 11:04:43"; 
        MyID = 53070; 
        SomeDescription = ""; 

       } 
      ); 
     } 
    ); 
} 

Если данные действительно НЕ содержит записи он выглядит следующим образом: Обратите внимание на «» в обратном наборе, который вызывает у меня проблемы.

dictData: { 
    Recordset =  (
     "" 
    ); 
} 

У меня возникают проблемы учета для массива нулевой длины в Recordset.

Вот мой базовый код для синтаксического анализа данных.

NSDictionary * dictData = [NSDictionary dictionaryWithDictionary:[someOtherDictionary objectForKey:@"Data"]]; 
NSArray * arrRecordSet = [dictData objectForKey:@"Recordset"]; 

if([arrRecordSet objectAtIndex:0] != nil) { 
    NSLog(@"CONTAINS RECORDS"); 
    //Do something with the records 
} 
else { 
    NSLog(@"DOES NOT CONTAIN RECORDS"); 
} 

Я пробовал различные итерации вещей, как проверка, если [arrRecordSet objectAtIndex:0] длина больше нуля или проверять размер счета.

Я думаю, что двойные кавычки меня отбрасывают.

Любая помощь?

UPDATE

RAW JSON в соответствии с просьбой

одна запись

{ 
    APIResponse =  { 
     Data =   { 
      Recordset =    (
           { 
        Record =      (
               { 
          MyDate = "2016-06-15 11:04:43"; 
          MyID = 53070; 
          SomeDescription = ""; 
         } 
        ); 
       } 
      ); 
     }; 
    }; 
} 

НЕТ ЗАПИСИ

{ 
    APIResponse =  { 
     Data =   { 
      Recordset = (
           "" 
      ); 
     }; 
    }; 
} 
+0

При входе в arrRecordSet.count что он говорит? –

+0

Он показывает количество 1. Если возвращается 1 запись, она также показывает количество 1. –

+1

вы можете показать действительный JSON в качестве примера вместо консольного журнала вашего разбора nsdictionary? – arturdev

ответ

0

Так что в случае успеха значение Recordset представляет собой массив со словарем, а в случае отказа значение Recordset - это массив со строкой.

Итак:

NSArray *recordSet = response[@"APIResponse"][@"Data"][@"Recordset"]; 
if ([recordSet count] > 0 && 
    [recordSet[0] isKindOfClass:[NSDictionary class]]) { 
    // Success 
    NSDictionary *record = recordSet[0]; 
    ... 
} else { 
    // Failure 
} 
+0

Спасибо! Это был способ проверить проверку isKindOfClass! –

-1

Здесь вы должны сначала проверить всю клавишу для словаря Recordset, если он вернет вам число> 0, тогда вы можете сказать, что данные доступны, а если нет, то есть пустая запись.

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