从Json向NSObject存储值

时间:2014-01-14 05:02:12

标签: ios objective-c json nsdictionary

这是我第一次使用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个属性的LogIn对象 - loginMsg,requestStatus,sessionId。

我试图研究如何获取值“loginMsg”或corpUserWs中的任何数据。请帮助我。

3 个答案:

答案 0 :(得分: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"];

但您可能必须将值转换为正确的数据类型

答案 1 :(得分:0)

假设名为“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"];
}

希望这有帮助!

答案 2 :(得分:0)

由于json字典中的键和模型对象的属性名称相同,因此您可以使用Key-Value-Coding来设置所有属性:

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]; 
}