【问题标题】:Store value to NSObject from Json从 Json 将值存储到 NSObject
【发布时间】: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 中的任何数据。请帮我解决这个问题。

【问题讨论】:

    标签: ios objective-c json nsdictionary


    【解决方案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]; 
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-10-21
          • 2021-11-22
          • 1970-01-01
          相关资源
          最近更新 更多