gpt4 book ai didi

ios - Mantle - 映射嵌套数据结构

转载 作者:行者123 更新时间:2023-11-28 21:45:03 25 4
gpt4 key购买 nike

我有一个稍微复杂的嵌套 JSON 对象,我需要将其映射到 Objective-C 类。我认为我需要做的是在映射时跳过 JSON 中的级别。这就是我的意思:

我想映射以下 JSON 字典:

NSDictionary *JSONDictionary = @{
@"status" : @"PASSWORD_EXPIRED",
@"_embedded" : @{
@"user" : @{
@"id" : @"00ub0oNGTSWTBKOLGLNR",
@"profile" : @{
@"login" : @"isaac@example.org",
@"firstName" : @"Isaac",
@"lastName" : @"Brock",
@"locale" : @"en_US",
@"timeZone" : @"America/Los_Angeles"
}
}
}
};

@interface Authentication : MTLModel <MTLJSONSerializing>
@property (strong, nonatomic) NSDate* expiresAt;
@property (strong, nonatomic) NSString* status;
@property (strong, nonatomic) NSString* relayState;
@property (strong, nonatomic) NSString* sessionToken;
@property (strong, nonatomic) NSString* stateToken;

//Embeded Resources
@property (strong, nonatomic) User* user;
@end

如您所见,我没有为“_embeded”创建对象。我将跳过它并将用户映射到用户对象。

这能实现吗?如果是,怎么做?

我已经在实现中尝试过,但没有成功:

@implementation Authentication
+ (NSDictionary*)JSONKeyPathsByPropertyKey {
return @{
@"expiresAt" : @"expiresAt",
@"status" : @"status",
@"sessionToken" : @"sessionToken",
@"stateToken" : @"stateToken",
@"relayState" : @"relayState",
@"user" : @"_embeded/user",
};
}

+ (NSValueTransformer *)userJSONTransformer {
return [NSValueTransformer mtl_JSONDictionaryTransformerWithModelClass:User.class];
}
@end

最佳答案

我曾经用下面的代码来做到这一点:

+ (NSValueTransformer *)userJSONTransformer {
return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(NSDictionary *userDict) {
return [MTLJSONAdapter modelOfClass:[User class] fromJSONDictionary:userDict error:nil];
} reverseBlock:^id(User *user) {
return [MTLJSONAdapter JSONDictionaryFromModel:user];
}];
}

还有 +JSONKeyPathsByPropertyKey 我认为应该是 @"user": @"_embeded.user"

关于ios - Mantle - 映射嵌套数据结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30522708/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com