从 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的主要内容,如果未能解决你的问题,请参考以下文章

将值附加到存储在 MySQL 中的 JSON 解码数组参数

将值从表单存储到网格

DynamoDB + 将值存储为项目或 JSON

我想使用 fs 以 json 格式将值存储在文件中

如何将值从数据库中的laravel存储到数组中?

json 将值加载到 extjs 复选框组网格编辑器中