【问题标题】:Serializing JSON into an NSArray with AFNetworking 2.5使用 AFNetworking 2.5 将 JSON 序列化为 NSArray
【发布时间】:2014-12-04 01:22:39
【问题描述】:

到目前为止,使用 AFNetworking 2.5 来填充一个数组,其中填充了与 last.fm API 相关的热门曲目的艺术家。这是我目前这样做的代码。

NSURL *url = [NSURL URLWithString:URLstring];
    NSURLRequest *request = [NSURLRequest requestWithURL:url];

    AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc]initWithRequest:request];
    operation.responseSerializer = [AFJSONResponseSerializer serializer];
    [operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {

        NSDictionary *dict = (NSDictionary *)responseObject;
        NSArray *allValues = [dict allValues];
        NSLog(@"all values contained in array: %@", allValues);
        NSLog(@"all values count: %lu", allValues.count);

计数返回 1。我想要一个包含曲目的数组,每个索引值对应一个曲目。目前,只有第一个索引值填充在数组中。我还注意到被打印回来的 JSON 数据是 JSON 格式,并且不像打印时会出现 NSArray 中的对象那样出现。

编辑:这里是input

【问题讨论】:

  • 在评论中更新了输入 JSON。
  • 你如何序列化 JSON到一个NSArray?序列化的结果将是某种字符串——char*NSStringNSData
  • 这当然不是合法的 JSON。

标签: ios objective-c json afnetworking afnetworking-2


【解决方案1】:

使用KVC获取曲目数组:

NSArray* tracks = [dict valueForKeyPath:@"toptracks.track"] 

或者类似的东西

【讨论】:

    【解决方案2】:

    从您发布的输入 JSON 来看,实现您所追求的最佳方式是修改以下内容。

    NSArray *allValues = [dict allValues]; 更改为

    NSDictionary *dict = (NSDictionary *)responseObject;
    NSArray *allValues = dict[@"toptracks"][@"track"];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-30
      • 1970-01-01
      • 2012-02-02
      • 2015-04-29
      • 1970-01-01
      相关资源
      最近更新 更多