因此,我向我们的服务器发出了一个简单的GET请求,响应代码如下:

[[[NSURLSession sharedSession] dataTaskWithRequest:request
                                     completionHandler:^(NSData *data, NSURLResponse *response, NSError *error)
      {
          NSString *dataString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
          NSLog(@"dataString: %@", dataString);

          NSData *jsonData = [dataString dataUsingEncoding:NSUTF8StringEncoding];
          NSDictionary *jsonContent = (NSDictionary*)[NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:&error];

          NSNumber * success = (NSNumber *)[jsonContent objectForKey: @"user_records_exist"];
          if([success boolValue] == YES)
          {
              NSLog(@"true");
              NSLog(@"success: %d", [success boolValue]);
          } else {
              NSLog(@"false");
              NSLog(@"failure: %d", [success boolValue]);
          }
      }] resume];

我得到的日志如下:
dataString: "{\"user_records_exist\": true}"

false
failure: 0

我不确定自己在做什么错。如何获得"user_records_exist"键的值?

谢谢

最佳答案

删除此代码:

NSString *dataString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];

NSLog(@"dataString: %@", dataString);

NSData *jsonData = [dataString dataUsingEncoding:NSUTF8StringEncoding];

从原始数据获取响应字典:
[[[NSURLSession sharedSession] dataTaskWithRequest:request
                                     completionHandler:^(NSData *data, NSURLResponse *response, NSError *error)
      {
          NSDictionary *jsonContent = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:&error];

          BOOL success = [[jsonContent objectForKey: @"user_records_exist"] boolValue];
          if(success)
          {
              NSLog(@"true");
              NSLog(@"success: %d", success);
          } else {
              NSLog(@"false");
              NSLog(@"failure: %d", success);
          }
      }] resume];

关于ios - 使用Objective-C中的JSON数据的NSJSONSerialization读取NSDictionary集的键值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43607599/

10-13 04:04
查看更多