我对 iOS 应用程序开发非常陌生,我从服务器收到以下响应:
"[{\"EmployeeID\":\"000001\",\"EmplyeeName\":\"ABCD EFGHI\"},
{\"EmployeeID\":\"000002\",\"EmplyeeName\":\"ADGHT ASASASAS\"}]"
请任何人帮助我了解如何在我的应用程序中使用员工 ID 和员工姓名。
NSData *response = ...;
NSArray *entries = [NSJSONSerialization JSONObjectWithData:response
options:0
error:nil];
for(NSDictionary* entry in entries) {
NSString* employeeID = [entry objectForKey:@"EmployeeID"];
}
您的 JSON 数据看起来像“嵌套 JSON”,这意味着您必须对其进行两次反序列化。
第一次反序列化从您的 JSON 数据中提取一个字符串:
NSData *response = ...; // your data
NSError *error;
NSString *innerJson = [NSJSONSerialization JSONObjectWithData:response
options:NSJSONReadingAllowFragments error:&error];
现在innerJson
是字符串
[{"EmployeeID":"000001","EmplyeeName":"ABCD EFGHI"},{"EmployeeID":"000002","EmplyeeName":"ADGHT ASASASAS"}]
这又是 JSON 数据。第二次反序列化提取数组:
NSArray *entries = [NSJSONSerialization JSONObjectWithData:[innerJson dataUsingEncoding:NSUTF8StringEncoding]
options:0 error:&error];
现在您可以像访问它一样访问它
for (NSDictionary *entry in entries) {
NSString* employeeID = [entry objectForKey:@"EmployeeID"];
NSLog(@"%@", employeeID);
}
看看 JSON Parser 你的响应是 JSON 所以你需要从 json 获取数据。
NSURL * url=[NSURL URLWithString:@"<YourURL>"];
NSData * data=[NSData dataWithContentsOfURL:url];
NSError * error;
NSMutableDictionary * json = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingMutableContainers error: &error];
NSLog(@"%@",json);
NSMutableArray * EmployeeID=[[NSMutableArray alloc]init];
NSMutableArray * EmployeeName=[[NSMutableArray alloc]init];
NSArray * responseArr = json[@"geonames"];
for(NSDictionary * dict in responseArr)
{
[EmployeeID addObject:[dict valueForKey:@"EmployeeID"]];
[EmployeeName addObject:[dict valueForKey:@"EmplyeeName"]];
}
现在你得到了 EmployeeID,EmployeeName 数组,你可以在任何你想要的地方使用。
看一眼:
用这个:
NSData* yourData = [[NSData alloc] initWithContentsOfURL: yourURL];
NSarray* yourJSON = [NSJSONSerialization JSONObjectWithData:yourData options:kNilOptions error:nil];
希望这对你有帮助:)
尝试使用这个:
NSDictionary *myJSON = [NSJSONSerialization JSONObjectWithData:myData options:NSJSONReadingMutableContainers error:nil];