从 Json 将值存储到 NSObject
Posted
技术标签:
【中文标题】从 Json 将值存储到 NSObject【英文标题】:Store value to NSObject from Json 【发布时间】:2014-01-14 05:02:11 【问题描述】:这是我第一次使用json结果并将其保存到一个对象作为我的目标。
我有这个作为我的示例 json。
"corpUserWs":"loginMsg":"User is locked out. Please request for your account to be unlocked.","requestStatus":0,"sessionId":"16gxtse746yqj"
我这里有一个代码
NSData *data = [responseString dataUsingEncoding:NSUTF8StringEncoding];
NSDictionary *json = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];
NSLog(@"%@",[json objectForKey:@"corpUserWs"]);
返回这个结果
loginMsg = "User is locked out. Please request for your account to be unlocked.";
requestStatus = 0;
sessionId = 16gxtse746yqj;
但我想要的是将结果存储在我声明的对象中。具有 3 个属性的登录对象 - loginMsg、requestStatus、sessionId。
我尝试研究如何获取值“loginMsg”或 corpUserWs 中的任何数据。请帮我解决这个问题。
【问题讨论】:
【参考方案1】:类似这样的:
NSData *data = [responseString dataUsingEncoding:NSUTF8StringEncoding];
NSDictionary *json = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];
NSDictionary *data = (NSDictionary*)[json objectForKey:@"corpUserWs"];
LogIn *login = [[LogIn alloc] init];
login.loginMsg = data[@"loginMsg"];
login.requestStatus = data[@"requestStatus"];
login.sessionId = data[@"loginMsg"];
但您可能必须将值转换为正确的数据类型
【讨论】:
【参考方案2】:假设一个名为“LoginResult”的实体具有以下属性:
@interface LoginResult : NSObject
@property (nonatomic, retain) NSString* loginMsg
@property (nonatomic, retain) NSNumber* requestStatus;
@property (nonatomic, retain) NSString* sessionId;
@end
可以使用以下代码填充新实体:
-(LoginResult*)populateFromJson:(NSString*)responseString
NSData *data = [responseString dataUsingEncoding:NSUTF8StringEncoding];
NSDictionary *json = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];
json = [json objectForKey:@"corpUserWs"];
LoginResult* result = [LoginResult new];
result.loginMsg = json[@"loginMsg"];
result.requestStatus = json[@"requestStatus"];
result.sessionId = json[@"sessionId"];
希望这会有所帮助!
【讨论】:
【参考方案3】:由于 json 字典中的键和模型对象的属性名称相同,您可以取消键值编码来设置所有属性:
NSData *data = [responseString dataUsingEncoding:NSUTF8StringEncoding];
NSDictionary *jsonDict = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];
LoginResult* result = [LoginResult new];
for (NSString *key in jsonDict)
[result setValue:jsondict[key] forKey:key];
【讨论】:
以上是关于从 Json 将值存储到 NSObject的主要内容,如果未能解决你的问题,请参考以下文章