2016-04-29 81 views
3

我是新來開發和stackoverflow請幫助我。我正試圖做一個簡單的應用程序,其中YQL鏈接用於獲取本地數據並以表格格式顯示。爲此,我將數據轉換爲字典,稍後我想將它發送到表中。但是,當我試圖將數據轉換爲字典它說空。請幫幫我。檢查下面的屏幕截圖。提前致謝。使用NSJSONSerialization時從NSDictionary獲得null

NSString *str = @"https://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20local.search%20where%20zip%3D'94085'%20and%20query%3D'pizza'&diagnostics=true"; 

在這裏,我把JSON查詢到一個字符串(* STR)

NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:str]]; 

// NSString *stringFromData = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding]; 
// NSLog(@"%@", stringFromData); 

,當我試圖像預期的那樣實現這個註釋代碼即時得到結果,但我希望把所有的數據到字典並顯示它,所以我試圖將數據轉換成字典

NSDictionary *dataFromWeb = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil]; 


NSDictionary *queryDict = [dataFromWeb objectForKey:@"query"]; 
NSDictionary *results = [dataFromWeb objectForKey:@"results"]; 
NSString *allResults = [queryDict objectForKey:@"Results"]; 

NSLog(@"%@", dataFromWeb); 

} 

enter image description here

+0

使用'error'參數。這是有原因的。 – rmaddy

回答

7

默認情況下,從Yahoo API返回的響應爲XML。你應該追加format=json的查詢字符串,以獲得JSON格式的響應,因此您可以使用NSJSONSerialization類解析它:所以你需要做的XML解析

NSJSONSerialization是

https://query.yahooapis.com/v1/public/yql?format=json&q=select... 
+0

它的工作非常感謝:) –

1

你的API返回的XML數據用於JSON解析

NSString *str = @"https://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20local.search%20where%20zip%3D'94085'%20and%20query%3D'pizza'&diagnostics=true"; 

    NSURL *UrlFromStr = [NSURL URLWithString:str]; 

打這個UrlFromStr在瀏覽器上看到它返回XML數據不JSON

使用NSXMLParser解析xml數據

1

請使用NSXMLParser解析xml數據而不是NSJSONSerialization。 NSJSONSerialization用於解析JSON數據。

申報在.m文件.h文件中

@property (nonatomic, strong) NSXMLParser *xmlParser; 

NSString *str = @"https://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20local.search%20where%20zip%3D'94085'%20and%20query%3D'pizza'&diagnostics=true"; 
NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:str]]; 

self.xmlParser = [[NSXMLParser alloc] initWithData:data]; 
self.xmlParser.delegate = self; 

// Initialize the mutable string that we'll use during parsing. 
self.foundValue = [[NSMutableString alloc] init]; 

    // Start parsing. 
[self.xmlParser parse]; 
0

對象的格式,你想解析是XML,但你使用類ParseJSON的解析它,所以它返回NULL.You可以使用類NSXML的解析它,然後將其委託執行相關方法...祝你好運..