我已经完成了有关iOS中JSON的Raywenderlich教程,但是我很难将其调整为适合自己的JSON文件。这是 我的JSON :
{ "Albumvideo":[ { "titre": "Publicité", "photo":"blabla.jpg" }, { "titre": "Events", "photo":"blabla.jpg" } ] }
这是 我的代码 :
- (void) viewDidLoad { [super viewDidLoad]; dispatch_async (kBgQueue, ^{ NSData* data = [NSData dataWithContentsOfURL:lienAlbumsVideo]; [self performSelectorOnMainThread:@selector(fetchedData:)withObject:data waitUntilDone:YES]; }); } - (void)fetchedData:(NSData *)responseData { NSError* error; NSDictionary* json = [NSJSONSerialization JSONObjectWithData:responseData options:kNilOptions error:&error]; NSArray* albumsvideo = [json objectForKey:@"titre"]; NSLog(@"Album: %@", albumsvideo); }
日志返回null。
null
你这样做是不对的。您已json正确将JSON数据填充到字典(名为)中。但你有一个Array of Dictionaries(被称为Albumvideo你的主要内部)Dictionary和价值的titre是内部Albumvideo数组。
json
Array of Dictionaries
Albumvideo
Dictionary
titre
正确的代码是:
NSError* error; NSDictionary* json = [NSJSONSerialization JSONObjectWithData:responseData options:kNilOptions error:&error]; NSArray* albumsvideo = [json objectForKey:@"Albumvideo"]; NSString *titre1 = [[albumsvideo objectAtIndex:0]valueForKey:@"titre"]; NSString *titre2 = [[albumsvideo objectAtIndex:1]valueForKey:@"titre"];
了解概念。这取决于你的内心里有什么JSON。如果它是一个数组(在Values内部[ ]),则必须保存在其中NSArray;如果它是一个字典(在Values内部{ }),则另存为NSDictionary;如果您有单个值(如string,integer),则将double值保存,则必须使用适当的Objective- C数据进行保存类型。
JSON
[ ]
NSArray
{ }
NSDictionary
希望您对 JSON解析 有一些正确的想法。