在 Objective-C 中检查来自 Json 响应的空值
Posted
技术标签:
【中文标题】在 Objective-C 中检查来自 Json 响应的空值【英文标题】:Checking a null value from Json response in Objective-C 【发布时间】:2013-05-21 10:53:46 【问题描述】:[
"AT" : null,
"EA" : null,
"AD2" : "",
"OP" : null,
"AdsLst" : [
],
"EMs" : null,
"ND" :
"MN" : null,
"FN" : "Sony",
"LN" : "J"
,
"ZP" : "23456",
"CT" : 1,
"PP" : 0,
"cId" : 161464,
"Pos" : null,
"WPExt" : null,
"OS" : 0,
"HP" : "(345) 678-7890",
"BTTC" : 0,
"PWD" : null,
"UId" : 627,
"DId" : 0,
"UN" : null,
"CY" : "Salt lake",
"Comp" : null,
"PMC" : 0,
"AEa" : null,
"AnD" : null,
"DOB" : "1\/05\/1979",
"IDel" : false,
"ST" : "UH",
"AD" : "2345 Symonds street",
"Mob" : null,
"WP" : "(234) 324-6576",
"PL" : 0,
"Potcus" : false
,
"AT" : null,
"EA" : null,
"AD2" : "",
"OP" : null,
"AdsLst" : [
],
"EMs" : null,
"ND" :
"MN" : null,
"FN" : "Augustine",
"LN" : "Gomes"
,
"ZP" : "43567",
"CT" : 1,
"PP" : 0,
"cId" : 161466,
"Pos" : null,
"WPExt" : null,
"OS" : 0,
"HP" : "(456) 457-6588",
"BTTC" : 0,
"PWD" : null,
"UId" : 627,
"DId" : 0,
"UN" : null,
"CY" : "test",
"Comp" : null,
"PMC" : 0,
"AEa" : null,
"AnD" : null,
"DOB" : null,
"IDel" : false,
"ST" : "AZ",
"AD" : "2345 test",
"Mob" : null,
"WP" : "(678) 987-0890",
"PL" : 0,
"Potcus" : false
,
"AT" : null,
"EA" : null,
"AD2" : "",
"OP" : null,
"AdsLst" : [
],
"EMs" : null,
"ND" :
"MN" : null,
"FN" : "Jenny",
"LN" : "X"
,
"ZP" : "45678",
"CT" : 1,
"PP" : 0,
"cId" : 161467,
"Pos" : null,
"WPExt" : null,
"OS" : 0,
"HP" : "(435) 644-6545",
"BTTC" : 0,
"PWD" : null,
"UId" : 627,
"DId" : 0,
"UN" : null,
"CY" : "Sallas",
"Comp" : null,
"PMC" : 0,
"AEa" : null,
"AnD" : null,
"DOB" : null,
"IDel" : false,
"ST" : "TX",
"AD" : "2433 Main street",
"Mob" : null,
"WP" : "(657) 656-8798",
"PL" : 0,
"Potcus" : false
,
"AT" : null,
"EA" : null,
"AD2" : "",
"OP" : null,
"AdsLst" : [
],
"EMs" : null,
"ND" :
"MN" : null,
"FN" : "BLVD Cont F1",
"LN" : "Blvd Contact L1"
,
"ZP" : "",
"CT" : 1,
"PP" : 0,
"cId" : 161473,
"Pos" : null,
"WPExt" : null,
"OS" : 0,
"HP" : null,
"BTTC" : 0,
"PWD" : null,
"UId" : 627,
"DId" : 0,
"UN" : null,
"CY" : "",
"Comp" : null,
"PMC" : 0,
"AEa" : null,
"AnD" : null,
"DOB" : null,
"IDel" : false,
"ST" : "",
"AD" : "",
"Mob" : null,
"WP" : null,
"PL" : 0,
"Potcus" : false
,
在此响应中,我只想显示 "FN","LN","CT","PP","cId","Pos","AT","EA","AD2" 这些标签值。 ...然后哪个是空值只想显示“Apple”....
谁能帮帮我
我的代码是
- (void)connectionDidFinishLoading:(NSURLConnection *)connection
NSError *error;
json = [NSJSONSerialization JSONObjectWithData:responseData options:kNilOptions error:&error];
NSLog(@"json.... %@",json);
id jsonObject = [NSJSONSerialization JSONObjectWithData:responseData options:NSJSONReadingAllowFragments error:nil];
NSLog(@"jsonObject=%@", jsonObject);
NSDictionary *checkArray=[jsonObject valueForKey:@"ND"];
cheDisk=[checkArray valueForKey:@"FN"];
cheDisk1=[checkArray valueForKey:@"LN"];
NSLog(@"FN =%@",cheDisk);
NSLog(@"LN =%@",cheDisk1);
【问题讨论】:
呃,if (object == nil) text = @"Apple";
怎么样?
我不确定我是否理解你想要做什么?
是的...我想显示 "FN","LN","CT","PP","cId","Pos","AT","EA","AD2 " 这些标签值......然后如果 null 意味着只显示 "Apple" 字符串
@sivakumar 看到我的回答对我有用
***.com/questions/4839355/…
【参考方案1】:
试试
objectForKey will return nil if a key doesn't exist
Symbol Value Meaning
======= ============= =========================================
NULL (void *)0 literal null value for C pointers
nil (id)0 literal null value for Objective-C objects
Nil (Class)0 literal null value for Objective-C classes
NSNull [NSNull null] singleton object used to represent null
NSString *strOP = [results objectForKeyOrNil:@"OP"];
- (id)objectForKeyOrNil:(id)key
id val = [self objectForKey:key];
if ([val isEqual:[NSNull null]] || val==nil)
return nil;
return val;
【讨论】:
【参考方案2】:- (void)connectionDidFinishLoading:(NSURLConnection *)connection
NSError *error;
json = [NSJSONSerialization JSONObjectWithData:responseData options:kNilOptions error:&error];
NSLog(@"json.... %@",json);
id jsonObject = [NSJSONSerialization JSONObjectWithData:responseData options:NSJSONReadingAllowFragments error:nil];
NSLog(@"jsonObject=%@", jsonObject);
NSDictionary *checkArray=[json valueForKey:@"ND"];
NSArray *tel = [checkArray valueForKey:@"FN"];
for (id photo in tel)
if (photo == [NSNull null])
// photo is null
else
// photo isn't null. It's an array
NSArray *innerPhotos = photo;
NSLog(@"photo... %@",innerPhotos);
cheDisk1=[checkArray valueForKey:@"LN"];
NSLog(@"FN =%@",tel);
[ContactTableview reloadData];
【讨论】:
【参考方案3】:你可以使用:
if (cheDisk isKindOfClass:[NSNull class])
// cheDisk is null
【讨论】:
【参考方案4】:试试这个代码:
cheDisk=[checkArray valueForKey:@"FN"];
cheDisk1=[checkArray valueForKey:@"LN"];.
if([cheDisk isEqualToString:@"null"])
cheDisk = @"Apple";
if([cheDisk1 isEqualToString:@"null"])
cheDisk1 = @"Apple";
NSLog(@"FN =%@",cheDisk);
NSLog(@"LN =%@",cheDisk1);
【讨论】:
以上是关于在 Objective-C 中检查来自 Json 响应的空值的主要内容,如果未能解决你的问题,请参考以下文章