我正在使用AFNetworking进行身份验证,如下所示
AFJSONRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request
success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) {
// Parsing will be here
{
failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id JSON) {
NSLog(@"ERROR :jason is %@",JSON);
}];
[client enqueueHTTPRequestOperation:operation];
以下是从服务器
收到的JSON{
"first_name" = A;
"last_name" = B;
}
问题: 如何在ios中解析这个JSON。我被卡住了,因为从服务器返回根本没有任何标签。如果其格式为
{
"user": {
"first_name": "A",
"last_name": "B",
}
}
我可以通过执行以下操作来解析
NSArray *userList = [[NSArray alloc] init];
userList = [JSON objectForKey:@"results"];
有什么想法吗?
答案 0 :(得分:2)
“标签”不在terminology of JSON中。 JSON的复杂结构在发送方和接收方之间进行协商(或简单地由发送方决定),只要它正确解析,就不需要遵循任何特定的大纲。
你引用的第一个准JSON字符串(如果它是有效的JSON)可能会识别个人的名字和姓氏,你可能会知道它是一个“用户”身份,以及它识别出的用户,从上下文。
通常,您必须将JSON字符串作为洋葱接近,一次剥离一个图层。在第一个字符串的情况下,只有一个图层,一个映射到NSDictionary的“对象”。因此,收到对象后(如果有必要,使用isKindOfClass
验证它确实是一个NSDictionary),您可以将id
值转换为NSDictionary
并继续使用{{1或者其他一些来访问。中的值。
答案 1 :(得分:0)
您应该使用iOS5中提供的新JSONSerialization类,这使得JSON易于使用。下面是一个抓住你的json并在fetchedData方法中解析它的快速示例。下面列出的资源
//CALL dataWithContentsOfURL ONCE DATA HAS BEEN RECEIVED YOU CAN PARSE THE JSON:
NSError *error = nil;
NSData* data = [NSData dataWithContentsOfURL:kURL options:NSDataReadingUncached error:&error];
if (error) {
NSLog(@"%@", [error localizedDescription]);
} else {
NSLog(@"Data has loaded successfully.");
}
//MORE CODE HERE?
- (void)fetchedData:(NSData *)responseData {
_yourObjectArray = [[NSMutableArray alloc] init];
//parse out the json data
NSError* error;
NSArray* json = [NSJSONSerialization JSONObjectWithData:responseData //1
options:kNilOptions
error:&error];
for(int i=0; i<[json count]; i++){
YourObject *yObject = [[YourObject alloc]init];
NSDictionary* rawData = [json objectAtIndex:i]; //2
yObject.FirstName = [rawData objectForKey:@"first_name"];
yObject.LastName = [rawData objectForKey:@"last_name"];
[_yourObjectArray addObject:yObject];
}
}
来源: http://developer.apple.com/library/ios/#documentation/Foundation/Reference/NSJSONSerialization_Class/Reference/Reference.html http://www.raywenderlich.com/5492/working-with-json-in-ios-5