JSON序列化返回Null

时间:2014-04-23 01:05:10

标签: ios objective-c json ios7

在我们的项目中,我们将值视为来自服务的json

很可能我的问题被多次询问,但我找不到任何解决方案。

以下是代码块:

  NSData *urlData=[NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];

  NSString *responseData = [[NSString alloc]initWithData:urlData encoding:NSUTF8StringEncoding];
  NSLog(@"Response ==> %@", responseData);
  NSError *error = nil;

  NSDictionary *jsonData = [NSJSONSerialization JSONObjectWithData:urlData options:NSJSONReadingMutableContainers error:&error];

  NSString* userID = [jsonData objectForKey:@"user_ID"];
  NSLog(@"Success: %ld userID: %ld",(long)success, (long)userID);

日志:

回复代码:200

回复==>

{" USER_ID":4}

成功:0 userID:0

正如您所看到的,我想将json对象转换为字符串,但是当我打印出jsonData的内容时,它返回null我想我有一个JSONSerializaton的问题。有人可以建议解决方案吗?

谢谢, 乌米特

1 个答案:

答案 0 :(得分:0)

只需使用以下代码进行测试即可。您应该记录错误并检查响应数据,它可能包含一些无效的编码。

const char *jsonStr = "{\"user_ID\":4}\n";
NSData *jsonData = [NSData dataWithBytes:jsonStr length:strlen(jsonStr)];
NSError *error = NULL;
NSDictionary *jsonObj = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:&error];
NSNumber *userIDObj = [jsonObj objectForKey:@"user_ID"];
NSInteger userID = [userIDObj integerValue];
NSLog(@"=========>User ID: %d", userID);