一尘不染

Objective-C中的JSON解析

json

我已经完成了有关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


阅读 553

收藏
2020-07-27

共1个答案

一尘不染

你这样做是不对的。您已json正确将JSON数据填充到字典(名为)中。但你有一个Array of Dictionaries(被称为Albumvideo你的主要内部)Dictionary和价值的titre是内部Albumvideo数组。

正确的代码是:

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解析 有一些正确的想法。

2020-07-27