0

以下のようにAFNetworkingを使用して認証を行っています

AFJSONRequestOperation *operation   =   [AFJSONRequestOperation JSONRequestOperationWithRequest:request 
                                                                                            success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) {
                                                                                                // Parsing will be here                                                                                                                                                                                      
                                                                                            {

                                                                                            failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id JSON) {
                                                                                                NSLog(@"ERROR :jason is %@",JSON);
                                                                                            }];

[client enqueueHTTPRequestOperation:operation];

以下はサーバーから受信したJSONです

{
    "first_name" = A;
    "last_name" = B;
}

質問:iOSでこのJSONを解析するにはどうすればよいですか。サーバーからのリターンにタグがまったくないため、スタックしています。そのフォーマットが

{
  "user": {
    "first_name": "A",
    "last_name": "B",
  }
}

次のようにして解析できます

NSArray  *userList  = [[NSArray alloc] init];
userList            =  [JSON objectForKey:@"results"];

何か案は?

4

2 に答える 2

2

「タグ」はJSON の用語ではありません。JSON の複雑な構造は、送信者と受信者の間でネゴシエートされ (または単に送信者によって指示され)、正しく解析される限り、特定のアウトラインに従う必要はありません。

引用した最初の準 JSON 文字列 (有効な JSON の場合) は、おそらく個人の姓名を識別し、コンテキストから、それが「ユーザー」ID であり、識別されたユーザーであることをおそらく知っているでしょう。 .

一般に、一度に 1 つのレイヤーを剥がして、タマネギとして JSON 文字列にアプローチする必要があります。最初の文字列の場合、NSDictionary にマップされる「オブジェクト」というレイヤーが 1 つしかありません。したがって、オブジェクトを受け取った (そして、必要に応じて、 を使用してそれが実際に NSDictionary であることを確認したら)に値をisKindOfClassキャストし、またはそのようなものを使用して内部の値にアクセスします。idNSDictionaryobjectForKey

于 2012-09-17T22:18:06.753 に答える
0

JSON を簡単に使用できるようにする、iOS5 で利用可能な新しい JSONSerialization クラスを利用する必要があります。以下は、json を取得して fetchedData メソッドで解析する簡単な例です。以下のリソース

//CALL dataWithContentsOfURL ONCE DATA HAS BEEN RECEIVED YOU CAN PARSE THE JSON:
NSError *error = nil;
NSData* data = [NSData dataWithContentsOfURL:kURL options:NSDataReadingUncached error:&error];
if (error) {
    NSLog(@"%@", [error localizedDescription]);
} else {
    NSLog(@"Data has loaded successfully.");
}
//MORE CODE HERE?


- (void)fetchedData:(NSData *)responseData {
    _yourObjectArray = [[NSMutableArray alloc] init];

    //parse out the json data
    NSError* error;
    NSArray* json = [NSJSONSerialization JSONObjectWithData:responseData //1
                                                    options:kNilOptions
                                                      error:&error];

    for(int i=0; i<[json count]; i++){
        YourObject *yObject = [[YourObject alloc]init];
        NSDictionary* rawData = [json objectAtIndex:i]; //2

        yObject.FirstName = [rawData objectForKey:@"first_name"];
        yObject.LastName = [rawData objectForKey:@"last_name"];

        [_yourObjectArray addObject:yObject];
    }
}

ソース: http://developer.apple.com/library/ios/#documentation/Foundation/Reference/NSJSONSerialization_Class/Reference/Reference.html http://www.raywenderlich.com/5492/working-with-json-in- iOS-5

于 2012-09-17T20:54:10.600 に答える