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 服务器

NSMutableArray 到 JSON 对象

JSON到带有AFNetworking的NSMutableArray [重复]

如何将json数据中的对象添加到nsmutablearray?

iOS/Objective-C:将 NSString 对象添加到 NSMutableArray,NSMutableArray 为 (null)

NSMutableArray true 转换为 json 输出并在 Swift 3 中使用 Alamofire 将其发布到远程