检查 JSON 集中的零长度数组

Checking for zero length array from JSON set

我有 JSON 个数据集 return 我正在解析。

如果数据包含一条记录,它看起来像这样:

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

                }
            );
        }
    );
}

如果数据 NOT 包含一条记录,它看起来像这样: 请注意 return 集合中的“”,它导致了我的问题。

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] 长度是否大于零或检查计数大小。

我觉得双引号让我失望了。

有什么帮助吗?

更新

RAW JSON 根据要求

一条记录

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

无记录

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

在这里你应该首先检查字典Recordset的所有键如果它returns你计数>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
}