JSON 到 NSMutableArray iOS
Posted
技术标签:
【中文标题】JSON 到 NSMutableArray iOS【英文标题】:JSON to NSMutableArray iOS 【发布时间】:2015-06-13 11:58:52 【问题描述】:作为对请求的响应,我得到 JSON:
"letters":
"A": 0,
"B": 1,
"C": 2,
"D": 3,
"E": 4,
...
这是我获取此 JSON 的代码:
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:url]];
AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];
operation.responseSerializer = [AFJSONResponseSerializer serializer];
[operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject)
NSLog(@"%@", responseObject);
failure:^(AFHTTPRequestOperation *operation, NSError *error)
// Handle error
];
我想用这样的键(不是值)填充数组:
数组[0] = "A"
数组[1] = "B" ...?
【问题讨论】:
Going from JSON to NSArray 的可能重复项 @sobolevn 错误示例 .... @benji 谷歌它哥们。你正在尝试做的事情的例子比世界上所有海滩上的沙粒还要多:p 我想,用什么代码来获取响应并不重要。 【参考方案1】:NSMutableArray *parts = [NSMutableArray new];
NSDictionary *allletters = [responseObject objectForKey:@"letters"];
for (NSString *key in [allletters allKeys])
NSString *value = [allletters objectForKey: key];
[parts insertObject:key atIndex:[val intValue]];
【讨论】:
随便做 - [parts addObject:[allletters objectForKey:key]]; 是的,这也可以,但我发现用户是新的,所以我用简单的方式写了它。真的谢谢你。 做不必要的事情如何更简单? 这里用户不希望 0 索引上的“A”,而是希望索引上的 A 作为值。【参考方案2】:我还没有测试过代码。但应该是这样的:
NSDictionary *responseDictionary = (NSDictionary*)responseObject;
NSDictionary *letters = [responseDictionary objectForKey:"letters"];
NSMutableArray *lettersArray = [[NSMutableArray alloc]init];
if ( letters )
for (NSInteger i = 0; i < letters; ++i)
[lettersArray addObject:[NSNull null]];
[letters enumerateKeysAndObjectsWithOptions:NSEnumerationConcurrent
usingBlock:^(id key, id object, BOOL *stop)
[lettersArray replaceObjectAtIndex:[key integerValue] withObject:object]
]
【讨论】:
【参考方案3】:试试下面的代码
NSDictionary *letters = [responseObject objectForKey:"letters"];
NSArray *lettersArray = [letters allKeys];
【讨论】:
【参考方案4】:由于您已经在使用 JSON 响应序列化程序,因此 responseObject 应该是一个字典。
要获取子字典letters
的所有键,请执行以下操作
NSArray *letters = [reponseObject[@"letters"] allKeys];
这里不需要可变数组。但是如果你想让它可变,那就做
NSMutableArray *letters = [[reponseObject[@"letters"] allKeys] mutableCopy];
【讨论】:
以上是关于JSON 到 NSMutableArray iOS的主要内容,如果未能解决你的问题,请参考以下文章
在 PHP 中将 NSMutableArray 发送到 Json 服务器
JSON到带有AFNetworking的NSMutableArray [重复]
如何将json数据中的对象添加到nsmutablearray?
iOS/Objective-C:将 NSString 对象添加到 NSMutableArray,NSMutableArray 为 (null)
NSMutableArray true 转换为 json 输出并在 Swift 3 中使用 Alamofire 将其发布到远程