如何将字典值放入数组?
Posted
技术标签:
【中文标题】如何将字典值放入数组?【英文标题】:How to put the Dictionary values to an array? 【发布时间】:2017-01-25 04:30:19 【问题描述】:我是Objective-C的新手,请帮我解决这个问题,我有一本这样的字典
Async JSON: (
"cus_name" = cus1;
"cus_id" = 001;
,
"cus_name" = cus2;
"job_id" = 002;
)
但我需要与此相同的输出:
Async JSON:(
(
cus1,
001
),
(
cus2,
002
)
)
请帮我解决这个问题,这是我使用的代码:
NSData *cityData = [NSData dataWithContentsOfURL:[NSURL URLWithString:strURL]];
NSURLRequest *request = [[NSURLRequest alloc] initWithURL:[NSURL URLWithString:strURL]];
__block NSDictionary *json;
[NSURLConnection sendAsynchronousRequest:request
queue:[NSOperationQueue mainQueue]
completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError)
json = [NSJSONSerialization JSONObjectWithData:data
options:0
error:nil];
NSLog(@"Async JSON: %@", json);
];
【问题讨论】:
您的响应是数组而不是字典,我想您想将字典数组转换为嵌套数组。对吗? @Nirav D 谢谢,是的,你是对的,我需要嵌套数组中的输出,就像我上面提到的那样...... @Rob 这就是我的要求,这就是为什么,请帮我解决这个问题 【参考方案1】:你在这里犯了错误,你的JSON响应不是Dictionary
它是字典数组,如果你想转换它的嵌套数组,试试这样。
__block NSMutableArray *nestedArray = [NSMutableArray array];
[NSURLConnection sendAsynchronousRequest:request
queue:[NSOperationQueue mainQueue]
completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError)
NSArray *json = [NSJSONSerialization JSONObjectWithData:data
options:0
error:nil];
for (NSDictionary* dic in json)
NSMutableArray *subArray = [NSMutableArray array];
[subArray addObject:[dic objectForKey:@"cus_name"]];
if ([dic objectForKey:@"cus_id"])
[subArray addObject:[dic objectForKey:@"cus_id"]];
if ([dic objectForKey:@"job_id"])
[subArray addObject:[dic objectForKey:@"job_id"]];
[nestedArray addObject:subArray];
];
注意:NSURLConnection
已弃用,我建议您像这样使用NSURLSession
。
NSURLSession *session = [NSURLSession sessionWithConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]];
[[session dataTaskWithRequest:request
completionHandler:^(NSData *data, NSURLResponse *response, NSError *error)
// do stuff and access the data here
] resume];
【讨论】:
谢谢 Nirav 但是我在这一行遇到了一个错误:nestedArray.addObject(subArray),它说在 NSMutableArray 的对象类型中找不到 addobject @Tela 欢迎朋友 :) 我对您的回答和解释投了赞成票 @Nirav D 不,我点击它并说接受,对不起,我对堆栈溢出完全陌生,可能是我犯了错误。现在我再次接受了:) @Tela 没关系,它发生了 :) 欢迎 SO :)以上是关于如何将字典值放入数组?的主要内容,如果未能解决你的问题,请参考以下文章