嗨,我是iOS开发的新手。我想得到响应并将这些值添加到变量中。
我试过了,但我得到的响应低于。我不明白为什么这个回复中有斜杠。
@"[{"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(@"------------------------------------------------------------------------------");
}
有人可以帮助我从这个字符串中获取值吗?
你在响应中得到了字典数组,但你的响应是字符串中的,所以你使用这样的NSJSONSerialization
将其转换为NSArray
,将你的响应字符串转换为NSData
,然后使用该数据与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.
}
所以你有JSON
字符串和 2 个对象的array
。所以写下面的代码
这会JSON
字符串转换为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,这可能会导致崩溃。因此,请使用 Null 验证来避免这些崩溃。
首先,您需要解析字符串。
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"]);