从 NSDictionary 获取值



嗨,我是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"]);

最新更新