2016-06-15 5 views
0

私が解析しているJSONデータセットが返されました。JSONセットからゼロ長配列を確認する

データが、それはこのようになり、レコードが含まれている場合:どのリターンセットに お知らせ「」:データはませが、それはこのようになりますレコードが含まれていない場合

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

       } 
      ); 
     } 
    ); 
} 

を私に問題を引き起こしている。

dictData: { 
    Recordset =  (
     "" 
    ); 
} 

私はレコードで長さ0の配列を占めてトラブルを抱えています。

ここにデータを解析するためのベースコードがあります。

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]長さがゼロまたはカウントサイズをチェックするよりも大きければ、私はチェックのようなものの様々な反復を試してみました。

私は二重引用符が私を投げていると思います。

助けが必要ですか?要求

ONE RECORD

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

NO RECORDS

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

あなたはそれが何を言うんarrRecordSet.countをログ? –

+0

1のレコードが返された場合は、1のカウントも表示されます。 –

+1

解析されたnsdictionaryのコンソールログではなく、有効なJSONを例として表示できますか? – 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
として

UPDATE

RAW JSON

ここでは、辞書の最初のすべてのキーを確認する必要がありますレコードセットあなたがカウント> 0を返した場合、あなたはデータが利用可能であると言うことができ、そうでなければ空白のエントリがあります。

関連する問題