2010-06-14 41 views
0

回来,我很新的iPhone编程,我要做到以下几点东西变量类型:iPhone:通过yajl

  1. 得到一个JSON REST Web服务器
  2. 数据分析使用YAJL接收到的数据
  3. 使用核心情节

因此,1号项目是好的,我用ASIHttpRequest它运行作为espected 3几乎是精细绘制这些数据的图表(我仍然要学习如何调整核心地块) 。

我有的问题是关于第二项。 我用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 ...

你能帮忙吗?

非常感谢, 吕克

EDIT1:它发生此对象实际上是一个NSCFDictionary,我仍然无法从它那里得到的值,当我尝试objectFromKey方法(应该工作(!)在字典上,不是?)失败。

回答

1

它返回NSDictionaryNSCFDictionary是一个私人子类,对此讨论并不重要。因此,它看起来像你找回东西,如:

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

感谢戴夫,我只是想通了为什么objectForKey方法是行不通的(我没有使用正确的密钥,愚蠢的我....)。事情是,我仍然不明白为什么它是一个NSDictionary,当它应该是一个NSArray(如文档中指定的)。 非常感谢。 – Luc 2010-06-14 16:40:22