簡體   English   中英

無法在iOS中解析來自PHP的JSON get

[英]Can't parse JSON get from PHP in iOS

我正在開發一個應用程序,需要向Web服務發送請求並獲取下一個進程的JSON。 我正在使用AFNetworking來處理請求。 以下是我的PHP代碼

$data = array(
            array(
                'userID' => 'xxx'
            )
        );
echo json_encode($data);

我已經驗證了上面的代碼,打印結果很好。

[{"userID":"xxx"}]

然后,我使用AFNetworking發送對此Json數據的請求,如下所示

NSDictionary *parameters = @{@"action": @"verifyUDID", @"UDID": udid};

AFHTTPRequestOperationManager *manager = [[AFHTTPRequestOperationManager alloc] init];

[manager POST:@"http://roommateradar.com/RoommateRadarAPI.php"  
         parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) {

             NSLog(@"%@",responseObject);
             NSDictionary *dictionary = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingMutableContainers error:nil];

} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
    NSLog(@"Error: %@", error);
}];

NSLog正確顯示JSON數據,但是將JSON解析為NSDictionary的下一行會導致崩潰,輸出如下

2014-04-10 21:59:56.893 RoommateRadar[2941:60b] (
        {
        userID = xxx;
    }
)
2014-04-10 21:59:56.893 RoommateRadar[2941:60b] -[__NSCFArray bytes]: unrecognized selector sent to instance 0x1493e660
2014-04-10 21:59:56.895 RoommateRadar[2941:60b] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFArray bytes]: unrecognized selector sent to instance 0x1493e660'

所以你可以看到NSLog(@“%@”,responseObject); 實際上是顯示正確的事情。 順便說一句,我也試過了

[NSJSONSerialization isValidJSONObject:responseObject];

要驗證responseObject,結果也是有效的。

有什么幫助嗎?

AFNetworking已經為您反序列化了responseObject ,因此您不需要使用NSJSONSerialization

崩潰的原因是,當它需要NSData時,您將反序列化的NSArray傳遞給NSJSONSerialization

另外,當你這樣做時:

NSDictionary *dictionary = [NSJSONSerialization ...

你不會得到一本字典,你會得到一個數組。 你應該只有:

NSArray *users = (NSArray *)responseObject;
NSDictionary *user = [users objectAtIndex:0];

(顯然你需要檢查users數組count

此外,當您使用isValidJSONObject: ,您使用的方法是錯誤的。 它驗證對象是否可以轉換 JSON,而不是對象是否可以從JSON轉換。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM