是否有人可以幫我分析以下jsonData成的NSDictionary對象無法從金融谷歌解析JSON數據
[{ 「ID」: 「22144」, 「T」: 「AAPL」,」 e「:」NASDAQ「,」l「:」111.57「 ,」l_fix「:」111.57「,」l_cur「:」111.57「,」s「:」2「,」ltt「 「lt」:「11月28日下午4點」,「lt_dts」 ,「cp」:「-0.20」,「cp_fix」:「-0.20」,「ccol」 :「chr」,「pcls_fix」:「111.79」,「el」:「111.56」,「el_fix」:「111.56 「 ,」el_cur「:」111.56「,」elt「:」11月28日,美國東部時間晚上8點「,」ec「:」-0.01「 ,」ec_ 「-0.01」,「ecp」:「-0.01」,「ecp_fix」:「-0.01」,「eccol」: 「chr」,「div」:「0.57」,「yld」:「2.04」 }]
#define QUERY_PREFIX @"https://www.google.com/finance/info?q=NSE:AAPL"
#define QUERY_SUFFIX @"NSE:AAPL"
@implementation YQL
- (NSDictionary *) query: (NSString *)statement {
NSString *query = [NSString stringWithFormat:@"%@%@%@", QUERY_PREFIX, [statement stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding], QUERY_SUFFIX];
NSData *jsonData = [[NSString stringWithContentsOfURL:[NSURL URLWithString:query] encoding:NSUTF8StringEncoding error:nil] dataUsingEncoding:NSUTF8StringEncoding];
NSString *dataString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
NSUInteger firstCurlyBracePos = [dataString rangeOfString:@"[" options:0].location;
NSUInteger lastCurlyBracePos = [dataString rangeOfString:@"]" options: NSBackwardsSearch].location;
NSString *jsonString = nil;
if(firstCurlyBracePos != NSNotFound && lastCurlyBracePos != NSNotFound) {
jsonString = [dataString substringWithRange:NSMakeRange(firstCurlyBracePos, (lastCurlyBracePos-firstCurlyBracePos)+1)];
}
NSData *someData = [jsonString dataUsingEncoding:NSUTF8StringEncoding];
NSLog(@"%@ Nirmal",jsonString);
NSError *error = nil;
NSDictionary *results = [NSJSONSerialization JSONObjectWithData:someData options:0 error:&error];
NSLog(@"%@ Anand",results);
NSString* latestLoans = [results objectForKey:@"el_cur"];
NSLog(@"loans: %@", latestLoans);
if (error) NSLog(@"[%@ %@] JSON error: %@", NSStringFromClass([self class]), NSStringFromSelector(_cmd), error.localizedDescription);
return results;
}
@end
終止應用程序由於未捕獲的異常 'NSInvalidArgumentException' 的,原因是: ' - [__ NSSingleObjectArrayI objectForKey:]:無法識別的選擇發送到實例0x61800000d010'
這是一個有效的json。你正在使用'NSJSONSerialization'。但是因爲第一個對象是數組,所以使用帕特里克的建議。 – rptwsthi
爲什麼你將'JSON'' NSData'轉換爲字符串,然後將字符串轉換回'NSData'?在我看來,你試圖使用字符串解析來擺脫外部數組。不要這樣做。只需將整個東西轉換爲JSON對象並解析即可。並且是否將評論雙斜槓(「//」)作爲您獲得的數據的一部分,或者您是否添加了這些內容? –