从NSDictionary获取值

嗨,我是新的iOS开发。 我想获得回应,并将这些值添加到variables。

我尝试过,但我得到的答复。 我不明白为什么会有这样的反应。

@"[{\"VisitorID\":\"2864983a-e26b-441a-aedf-84e2a1770b8e\",\"ProfileID\":\"69c02265-abca-4716-8a2f-ac5d642f876a\",\"CompanyID\":null,\"VisitorName\":\"kanasalingam\",\"OperatorName\":\"baman\",\"Image\":null,\"isocode\":\"lk\",\"CurrentOperator\":[\"69c02265-abca-4716-8a2f-ac5d642f876a\"]},{\"VisitorID\":\"133bc108-b3bf-468a-9397-e1b0dba449db\",\"ProfileID\":\"69c02265-abca-4716-8a2f-ac5d642f876a\",\"CompanyID\":null,\"VisitorName\":\"kumar\",\"OperatorName\":\"baman\",\"Image\":null,\"isocode\":\"lk\",\"CurrentOperator\":[\"69c02265-abca-4716-8a2f-ac5d642f876a\"]}]" 

我试过这个:

 - (void) sendOtherActiveChats:(NSDictionary *) chatDetails{ NSLog(@"inside sendOtherActiveChats"); NSLog(@"otherDetails Dictionary : %@ ", chatDetails); NSString *VisitorID = [chatDetails objectForKey:@"VisitorID"]; NSString *ProfileID = [chatDetails objectForKey:@"ProfileID"]; NSString *CompanyID = [chatDetails objectForKey:@"CompanyID"]; NSString *VisitorName = [chatDetails objectForKey:@"VisitorName"]; NSString *OperatorName = [chatDetails objectForKey:@"OperatorName"]; NSString *isocode = [chatDetails objectForKey:@"isocode"]; NSLog(@"------------------------Other Active Chats -----------------------------------"); NSLog(@"VisitorID : %@" , VisitorID); NSLog(@"ProfileID : %@" , ProfileID); NSLog(@"CompanyID : %@" , CompanyID); NSLog(@"VisitorName : %@" , VisitorName); NSLog(@"OperatorName : %@" , OperatorName); NSLog(@"countryCode: %@" , isocode); NSLog(@"------------------------------------------------------------------------------"); } 

有人能帮我从这个string中获取值吗?

你得到的字典数组作为响应,但你的响应是string,所以你把它转换成NSArray使用NSJSONSerialization这样的方式,将您的响应string转换为NSData ,然后使用JSONObjectWithData:使用该数据JSONObjectWithData:从中获取数组。

 NSString *jsonString = @"[{\"VisitorID\":\"2864983a-e26b-441a-aedf-84e2a1770b8e\",\"ProfileID\":\"69c02265-abca-4716-8a2f-ac5d642f876a\",\"CompanyID\":null,\"VisitorName\":\"kanasalingam\",\"OperatorName\":\"baman\",\"Image\":null,\"isocode\":\"lk\",\"CurrentOperator\":[\"69c02265-abca-4716-8a2f-ac5d642f876a\"]},{\"VisitorID\":\"133bc108-b3bf-468a-9397-e1b0dba449db\",\"ProfileID\":\"69c02265-abca-4716-8a2f-ac5d642f876a\",\"CompanyID\":null,\"VisitorName\":\"kumar\",\"OperatorName\":\"baman\",\"Image\":null,\"isocode\":\"lk\",\"CurrentOperator\":[\"69c02265-abca-4716-8a2f-ac5d642f876a\"]}]"; NSData *data = [jsonString dataUsingEncoding:NSUTF8StringEncoding]; NSError *e; NSMutableArray *jsonArray = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:&e]; 

现在循环访问数组,并从中访问每个字典。

 for (NSDictionary *dic in jsonArray) { NSLog(@"%@",[dic objectForKey:@"VisitorID"]); ... and so on. } 

首先你需要parsing你的string。

 NSString *aString = @"[{\"VisitorID\":\"2864983a-e26b-441a-aedf-84e2a1770b8e\",\"ProfileID\":\"69c02265-abca-4716-8a2f-ac5d642f876a\",\"CompanyID\":null,\"VisitorName\":\"kanasalingam\",\"OperatorName\":\"baman\",\"Image\":null,\"isocode\":\"lk\",\"CurrentOperator\":[\"69c02265-abca-4716-8a2f-ac5d642f876a\"]},{\"VisitorID\":\"133bc108-b3bf-468a-9397-e1b0dba449db\",\"ProfileID\":\"69c02265-abca-4716-8a2f-ac5d642f876a\",\"CompanyID\":null,\"VisitorName\":\"kumar\",\"OperatorName\":\"baman\",\"Image\":null,\"isocode\":\"lk\",\"CurrentOperator\":[\"69c02265-abca-4716-8a2f-ac5d642f876a\"]}]"; NSData *data = [aString dataUsingEncoding:NSUTF8StringEncoding]; id json = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil]; NSLog(@"%@",[[json objectAtIndex:0] objectForKey:@"VisitorID"]); 

所以你有JSONstring和2个对象的array 。 所以写下面的代码

这会将JSONstring转换为Array

 NSData *myJSONData = [YOUR_JSON_STRING dataUsingEncoding:NSUTF8StringEncoding]; NSError *error; NSMutableArray *arrayResponse = [NSJSONSerialization JSONObjectWithData:myJSONData options:NSJSONReadingMutableContainers error:&error]; 

现在使用循环和打印数据为

 for (int i = 0; i < arrayResponse.count; i++) { NSDictionary *dictionaryTemp = [arrayResponse objectAtIndex:i]; NSLog(@"VisitorID : %@",[dictionaryTemp valueForKey:@"VisitorID"]); NSLog(@"ProfileID : %@",[dictionaryTemp valueForKey:@"ProfileID"]); NSLog(@"CompanyID : %@",[dictionaryTemp valueForKey:@"CompanyID"]); NSLog(@"VisitorName : %@",[dictionaryTemp valueForKey:@"VisitorName"]); } 

现在有很好的机会,你会得到NULL的一些键,它可能导致崩溃。 所以通过使用空validation来避免这些崩溃。