私はRestKitフレームワークにかなり慣れていません。一部の JSON 応答を解析する際に問題に直面しています。
{
"success": "1",
"loginStatus": "Success",
"sessionToken": "NTE5YTg5NjE4ZDIxYzQ3YzMUybdtsUU8989GVmaW5lZHwxMzY5ODE0MTc4Mzgw",
"user": {
"ActivationMethod": false,
"ActivationToken": "iey4C5E3iMt7mXZL",
"Active": true,
"FirstName": "John",
"LastName": "Doe",
}
}
これは、ログイン Web サービスの応答です。
私が望むのは、sessionToken、FirstName、および LastName の値を 1 つのクラスにマップすることです。このために、クラス User を作成しました
@interface User : NSObject
@property (nonatomic, strong) NSString* firstName;
@property (nonatomic, strong) NSString* lastName;
@property (nonatomic, strong) NSString* sessionToken;
@end
マッピングのために、次のコードを試しました:
RKObjectMapping* mapping = [RKObjectMapping mappingForClass:[User class]];
[mapping addAttributeMappingsFromDictionary:@{
@"FirstName": @"firstName",
@"LastName": @"lastName",
@"sessionToken" : @"sessionToken",
}];
RKResponseDescriptor *responseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:mapping pathPattern:@"/login" keyPath:nil statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)];
[objectManager addResponseDescriptor:responseDescriptor];
これを使用して、Lastname と Firstname の値を null として取得します。
URL は http://[BASE URL]/login です。
オブジェクト マッピングに関するこのリンクを確認しましたが、この問題を解決できました。
この点に関する指針は非常に役立ちます
よろしく、
tek3
** * ** * ** * ** * **編集** * ** * ** * ** * ****
以下のコードを使用して値を取得できるようになりました。
RKObjectMapping* userMapping = [RKObjectMapping mappingForClass:[User class] ];
[userMapping addAttributeMappingsFromDictionary:@{
@"FirstName": @"firstName",
@"LastName": @"lastName",
}];
RKObjectMapping* loginMapping = [RKObjectMapping mappingForClass:[Login class] ];
[loginMapping addAttributeMappingsFromDictionary:@{
@"sessionToken": @"sessionToken",
}];
[loginMapping addPropertyMapping:[RKRelationshipMapping relationshipMappingFromKeyPath:@"user"
toKeyPath:@"user"
withMapping:userMapping]];
RKResponseDescriptor *responseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:loginMapping pathPattern:@"/login" keyPath:nil statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)];
しかし、まだ 1 つの混乱があります。別のログインを作成する必要がありました
@interface Login : NSObject
@property (nonatomic, strong) NSString* sessionToken;
@property (nonatomic, strong) User* user;
@end
ログインは User クラスのオブジェクトをプロパティとして持っています。複数のネストされたオブジェクトではなく、単一のオブジェクトを作成するだけで、JSON 応答のすべてのキーの値を取得する方法はありますか?