我有复杂的JSON处理大量数据,我需要通过仅向服务器发送映射对象的必需属性来优化网络流量。
为简单起见,我假设我有以下用户类:
@property (nonatomic, retain) NSString *email;
@property (nonatomic, retain) NSString *fname;
@property (nonatomic, retain) NSString *password;
@property (nonatomic, retain) NSString *profilePic;
@property (nonatomic, retain) NSString *sname;
@property (nonatomic, retain) NSString *status;
@property (nonatomic, retain) NSString *token;
@property (nonatomic, retain) NSString *username;
@property (nonatomic, retain) NSNumber *isLoggedIn;
@property (nonatomic, retain) NSDate *dateCreated;
我的属性映射字典如下:
[dic addEntriesFromDictionary:@{
@"fname": @"fname",
@"sname": @"sname",
@"profilePic": @"profilePic",
@"email": @"email",
@"username": @"username",
@"password": @"password",
@"status": @"status",
@"token": @"token",
@"isLoggedIn": @"isLoggedIn",
@"dateCreated": @"dateCreated"
}];
对于Signin通话,我只需发布用户名&密码如下JSON:
{
"user": {
"password": "password",
"username": "demouser"
}
}
对于注册调用,我需要POST整个User对象,所以我不能缩小映射字典。我需要将相同的过程应用于更复杂的JSON。
如何以最佳方式在条件基础上在POST调用中发送对象的必需属性?
感谢。
答案 0 :(得分:1)
您可以自由地为同一类/实体类型创建多个映射 - 没有限制。每个映射都与其他映射/请求描述符/响应描述符相关联,这是您需要专注于识别和唯一性的地方。
最简单的方法是让一个请求映射覆盖所有属性,其类为NSDictionary
。然后,要将此映射用于请求,请使用KVC(dictionaryWithValuesForKeys:
)仅将感兴趣的键从真正的源对象提取到字典中,然后您可以将其提供给对象管理器以进行映射和传输。