Iphone SBJSON失去引号
我正在使用SBJSON解析器解析JSON响应:Iphone SBJSON失去引号,iphone,objective-c,json,Iphone,Objective C,Json,我正在使用SBJSON解析器解析JSON响应: {"status":0,"sessions":[{"name":"kldlksdklsdkl","active":false,"status":"saved","type":"web","key":"30228ee71f09b93aaa2d1738","contributor_id":"lance","created_at":"Mon May 02, 2011 02:35 PM","closed_at":"Mon May 02, 2011 02:4
{"status":0,"sessions":[{"name":"kldlksdklsdkl","active":false,"status":"saved","type":"web","key":"30228ee71f09b93aaa2d1738","contributor_id":"lance","created_at":"Mon May 02, 2011 02:35 PM","closed_at":"Mon May 02, 2011 02:46 PM"}{"name":"Blahieririe","active":false,"status":"saved","type":"web","key":"dbd2bbcc8681bba6a6532051","contributor_id":"lance","created_at":"Mon May 02, 2011 01:42 PM","closed_at":"Mon May 02, 2011 02:34 PM"},{"name":"Jim","active":false,"status":"saved","type":"web","key":"ec5bcf18356a29bb4490841f","contributor_id":"lance","created_at":"Fri April 29, 2011 02:37 PM","closed_at":"Fri April 29, 2011 02:38 PM"}]}
从使用以下代码的服务器:
NSArray *sessionsArray = [dictionary objectForKey:@"sessions"];
NSArray *tempArray = [[NSArray alloc] init];
for(NSString *item in sessionsArray){
NSLog(@"Session Found: \'%@\'",item);
NSDictionary *myDictionary = [item JSONValue];
}
我从我的JSON中得到了一个很好的数组,但当我尝试将每个片段放入NSDictionary时,它给了我一个异常,我记录了它,发现引号正在从一些键和/或值中删除,如图所示:
{
active = 1;
"contributor_id" = lance;
"created_at" = "Mon May 02, 2011 03:26 PM";
key = e10e5feeea3425ae213cb4cc;
name = "JSON TEST";
status = active;
type = web;
}
这是JSON解析器中的错误吗?还是我在做傻事?引号没有被“删除” 在JSON中,每个字符串都被引用,但引号本身不是字符串的一部分。例如,如果你写
NSArray *sessionsArray = [dictionary objectForKey:@"sessions"];
NSDictionary *session = [sessionArray objectAtIndex:0];
NSString sessionName = [session objectForKey:@"name"];
相应的会话名称不会用引号显示
当您NSLog()
字典或数组时,Cocoa使用NeXTSTEP属性列表格式来表示字典/数组。在这种格式中,如果值是简单的单词,则引号是可选的
也就是说,您应该按如下方式枚举这些JSON数据:
NSString *jsonString = …;
NSDictionary *jsonResult = [jsonString JSONValue];
NSArray *sessionsArray = [jsonResult objectForKey:@"sessions"];
for (NSDictionary *session in sessionArray) {
NSString *sessionName = [session objectForKey:@"name"];
BOOL sessionActive = [[session objectForKey:@"active"] boolValue];
NSString *sessionStatus = [session objectForKey:@"status"];
…
}
引号没有“被删除” 在JSON中,每个字符串都被引用,但引号本身不是字符串的一部分。例如,如果你写
NSArray *sessionsArray = [dictionary objectForKey:@"sessions"];
NSDictionary *session = [sessionArray objectAtIndex:0];
NSString sessionName = [session objectForKey:@"name"];
相应的会话名称不会用引号显示
当您NSLog()
字典或数组时,Cocoa使用NeXTSTEP属性列表格式来表示字典/数组。在这种格式中,如果值是简单的单词,则引号是可选的
也就是说,您应该按如下方式枚举这些JSON数据:
NSString *jsonString = …;
NSDictionary *jsonResult = [jsonString JSONValue];
NSArray *sessionsArray = [jsonResult objectForKey:@"sessions"];
for (NSDictionary *session in sessionArray) {
NSString *sessionName = [session objectForKey:@"name"];
BOOL sessionActive = [[session objectForKey:@"active"] boolValue];
NSString *sessionStatus = [session objectForKey:@"status"];
…
}