代码之家  ›  专栏  ›  技术社区  ›  Luc

iphone:yajl返回的变量类型

  •  0
  • Luc  · 技术社区  · 14 年前

    我对iPhone编程很陌生,我想做以下事情:

    1. 从JSON REST Web服务器获取数据
    2. 使用yajl解析接收到的数据
    3. 使用核心图绘制一个包含这些数据的图表

    所以,1项很好,我使用asihttpRequest,它按预期运行。 第三个几乎是好的(我仍然需要学习如何调整核心情节)。

    我的问题是关于第二项。 我使用yajl,因为它似乎是更快的解析器,所以为什么不尝试一下呢:)

    下面是从服务器获取数据并分析数据的代码部分:

    // Get server data
    response_data = [request responseData];
    
    // Parse JSON received
    self.arrayFromData = [response_data yajl_JSON];
    NSLog(@"Array from data: %@", self.arrayFromData);
    

    实际上,解析工作非常好,nslog输出类似于:

    2010-06-14 17:56:35.375测试_-app[3733:207]阵列数据:

    {
    data =     (
                {
            val = 1317;
            date = "2010-06-10T15:50:01+02:00";
        },
                {
            val = 1573;
            date = "2010-06-10T16:20:01+02:00";
        },
            ........
        {
            val = 840;
            date = "2010-06-11T14:50:01+02:00";
        },
                {
            val = 1265;
            date = "2010-06-11T15:20:01+02:00";
        }
    );
    from = "2010-06-10T15:50:01+02:00";
    to = "2010-06-11T15:20:01+02:00";    
    max = "2590";    
    }
    

    根据Yajl objc的解释 http://github.com/gabriel/yajl-objc ,解析返回一个nsarray… 问题是…我不知道如何从中获取所有的值,对我来说,它看起来更像一个nsdictionary而不是一个nsarray…

    你能帮忙吗?

    谢谢, 吕克

    edit1:碰巧这个对象实际上是一个nscfDictionary(!),我仍然无法从中获取值,当我尝试objectfromkey方法时(这应该适用于字典,不是吗?)它失败了。

    1 回复  |  直到 14 年前
        1
  •  1
  •   Dave DeLong    14 年前

    它正在返回 NSDictionary . NSCFDictionary 是一个私有子类,对本讨论不重要。所以看起来你会找回一些东西,比如:

    NSDictionary * responseDictionary = ...;
    NSArray * dataArray = [responseDictionary objectForKey:@"data"];
    for (NSDictionary * dataPair in dataArray) {
      NSLog(@"val: %@, date: %@", [dataPair objectForKey:@"val"], [dataPair objectForKey:@"date"]);
    }