我有一个返回JSON对象的HTTP Post请求。我可以将返回值视为字符串,它是完美的。我坚持的是将这个返回值转换为可以解析为JSON对象的东西。我不确定概念步骤,更不用说我应该编写的代码了。
这是我的代码。它崩溃了JSON序列化行,因为我尝试将返回字符串转换为NSData之前的行导致nil值。我甚至不确定是否需要这一步,但我找不到成功的解决方案。
谁能告诉我我做错了什么?谢谢!
- (void) finished: (NSNotification *) n
{
MyDownloader *d = [n object];
NSData *data = nil;
if ([n userInfo]) {
NSLog(@"information retrieval failed");
} else {
data = d.receivedData;
NSString *text=[[NSString alloc]initWithData:d.receivedData encoding:NSUTF8StringEncoding];
NSLog(@"%@", text);
NSData *data = [NSData dataWithContentsOfFile:text];
self.response = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil];
if (self.response)
[self parseJSONObject];
else NSLog(@"The server has responded with something other than a JSON formatted object");
}
[[NSNotificationCenter defaultCenter] removeObserver:self
name: @"connectionFinished"
object:d];
}
答案 0 :(得分:1)
您正在使用dataWithContentsOfFile
,它正在尝试从本地文件系统中的文件加载数据。请改用:
NSData *data = [text dataUsingEncoding:NSUTF8StringEncoding];
然而,正如@MartinR指出的那样,没有必要将d.recievedData
转换为字符串然后再转换回数据。直接使用它。
NSData *data = d.recievedData;