将返回字符串从PHP转换为JSON对象

时间:2014-01-02 20:06:55

标签: php objective-c json

我有一个返回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];

}

1 个答案:

答案 0 :(得分:1)

您正在使用dataWithContentsOfFile,它正在尝试从本地文件系统中的文件加载数据。请改用:

NSData *data = [text dataUsingEncoding:NSUTF8StringEncoding];

然而,正如@MartinR指出的那样,没有必要将d.recievedData转换为字符串然后再转换回数据。直接使用它。

NSData *data = d.recievedData;