1

我正试图从 JSON 数组中提取一个键值并将其保存为字符串以供以后比较:以下代码使我的应用程序在到达这部分代码时崩溃。我不明白为什么。

我的 json 数组如下所示:

[{"User_Id":"CRNA000099","User_Name":"jbliz","User_Fname":"Julia"}]

我的xcode:

userarray_login = [NSJSONSerialization JSONObjectWithData:dataURL options:kNilOptions error:&error];

 NSDictionary* userType = [userarray_login objectForKey:@"User_Name"];
 NSString *userPermission = [userType objectAtIndex:0];

 if ([userPermission isEqualToString:@"jbliz"])
    {
    NSLog(@"I should get the avalue here: %@", userPermission);
}

我对 NSDictionary 和 NSString 感到困惑。任何反馈都将是

4

3 回答 3

1
NSMutableArray *name=[[[NSMutableArray alloc] initWithArray:[userarray_login valueForKey:@"User_Name"]]retain];
// Get the only all Names into name Array from json Array

 NSString *userPermission = [name objectAtIndex:0]; // get the first name from Array

 if ([userPermission isEqualToString:@"jbliz"])
    {
    NSLog(@"I should get the avalue here: %@", userPermission);
}
于 2013-10-23T05:16:54.437 回答
1

Json Array:[{"User_Id":"CRNA000099","User_Name":"jbliz","User_Fname":"Julia"},{},...]一个包含字典的数组。

对于这个尝试,

 NSArray * userarray_login = [NSJSONSerialization JSONObjectWithData:dataURL options:kNilOptions error:&error];

    for (NSDictionary * dict in userarray_login) { 
        NSString * name = [dict objectForKey:@"User_Name"];
        if ([name isEqualToString:@"jbliz"]) {
            NSLog(@"Value is here: %@", name);
        }
    }
于 2013-10-23T05:18:24.277 回答
1

您的 json 有一系列 Dictionary 您需要按照以下步骤操作,

//NSJSONSerialization return you array in userarray_login 

userarray_login = [NSJSONSerialization JSONObjectWithData:dataURL options:kNilOptions error:&error];

//You fetch Dictionary from the array 
     NSDictionary* userType = [userarray_login objectAtIndex:0];

//Fetch NSString value using keyValue
     NSString *userPermission = [userType objectForKey:@"User_Name"];

//String comparison 
     if ([userPermission isEqualToString:@"jbliz"])
        {
        NSLog(@"I should get the avalue here: %@", userPermission);
    }

这是您的东西的正确代码。

于 2013-10-23T05:18:35.877 回答