iPhone:yajl返回的变量类型

时间:2010-06-14 16:21:10

标签: iphone json yajl

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

  1. 从JSON REST Web服务器获取数据
  2. 使用YAJL
  3. 解析收到的数据
  4. 使用core-plot
  5. 绘制包含这些数据的图表

    所以,第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 TEST_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 ......

    你能帮忙吗?

    非常感谢, LUC

    edit1:碰巧这个对象实际上是一个NSCFDictionary(!),我仍然无法从中获取值,当我尝试使用objectFromKey方法(应该在Dictionary上工作,没有?)时它会失败。 / p>

1 个答案:

答案 0 :(得分:1)

它返回NSDictionaryNSCFDictionary是一个私有子类,对于这个讨论并不重要。所以看起来你会检索像:

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