2012-12-10 82 views
-1

我有下面的代碼。我的問題是我試圖解析一個簡單的JSON響應,但它似乎並沒有工作。 JSON響應看起來是這樣的:JSON不解析在iOS?

{"response":"session_exists"} 

我用下面的呼應JSON:

$json_output = array('response' => 'session_exists'); 

所有我想知道的是什麼樣的反應是公平的。這將是session_exists或成功。我究竟做錯了什麼?

我還沒有和JSON工作過,所以如果有人可以幫助我,這將真正幫助我打算在這個項目上。

謝謝!

- (IBAction)login:(id)sender { 
    NSURL *url = [NSURL URLWithString:@"http://localhost/lookin_chill/Website/api/api_account.php?action=login&[email protected]&password=pass123"]; 
    NSURLRequest *request = [NSURLRequest requestWithURL:url]; 
    NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:request delegate:self]; 

    [connection start]; 
} 

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response 
{ 
    data = [[NSMutableData alloc] init]; 
} 

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)theData 
{ 
    [data appendData:theData]; 
} 

- (void)connectionDidFinishLoading:(NSURLConnection *)connection 
{ 
    [UIApplication sharedApplication].networkActivityIndicatorVisible = NO; 

    responses = [NSJSONSerialization JSONObjectWithData:data options:nil error:nil]; 

    NSLog(@"%@", responses); 

    NSLog(@"%@", [[responses objectAtIndex:0] objectForKey:@"response"]); 
} 
+1

是什麼'的NSLog(@ 「%@」,響應)的輸出;' –

回答

2

如果你的JSON看起來像你說出來的話,那麼響應應該是一個字典,而不是一個數組,這樣你就不能調用objectAtIndex:它0。日誌應該是:

的NSLog(@ 「%@」,即回覆objectForKey:@ 「響應」]);

+0

THANK YOU SO MUCH!它現在有效! – Alec

+0

@Alec - 重要的是要注意,JSON被解釋爲NSDictionarys和NSArrays的混合體,並且您需要閱讀JSON源以查看您應該期望的內容(或者使用'isKindOfClass'進行運行時檢查以找出什麼你得到了)。 –

+0

@Alec,我第二熱什麼說舔。我通常把日誌使用NSJSONSerialization方法檢查之類的東西,我回去後。 – rdelmar

0

亞歷克我只是用我的分析器進行了測試和行之有效的只是轉換爲NSDictionary中您迴應並嘗試這個,我只是以字符串

  NSString *string [email protected]"{\"response\":\"session_exists\"}"; 
     JSONDecoder *value =[string objectFromJSONString]; 
     NSDictionary *dictionary = (NSDictionary *)value; 
     NSLog(@"value %@",[dictionary objectForKey:@"response"]); 

嘗試過了,該值是

  session_exists