检查 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
}
我有 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
}