1

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

4

3 に答える 3

12

それは間違っている。ディクショナリ ( という名前json) に JSON データを正しく入力しました。しかし、メイン内にArray of Dictionaries(と呼ばれる) があり、の値は配列内にあります。AlbumvideoDictionarytitreAlbumvideo

正しいコードは次のとおりです。

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 inside [ ]) に保存する必要がありますNSArray。 Dictionary の場合 ( Values inside { }) は名前を付けて保存しNSDictionary、 string 、 integer 、 double などの単一の値がある場合は、適切な Objective-C Data を使用してそれらを保存する必要があります。種類。

JSON Parsingについて適切なアイデアが得られたことを願っています。

于 2013-06-10T14:07:18.927 に答える
1

ヴィンの答えは正しいです。基本的に、json 応答を解析するには、使用されているブラケットの種類を調べます。

外側のシンボルから解析を開始し、シンボルを確認します。そうであれば、
1) {NSDictionary です。
2) [NSArray です。

これらの単純なルールは、あなたの人生を楽にしてくれます。:)

于 2013-06-10T14:28:50.603 に答える