0

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

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

所以,第 1 项很好,我使用 ASIHttpRequest 运行,因为预期第 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...

能否请你帮忙 ?

非常感谢,卢克

编辑1:碰巧这个对象实际上是一个NSCFDictionary(!),我仍然无法从中获得价值,当我尝试objectFromKey方法时(应该在字典上工作,不?)它失败了。

4

1 回答 1

1

它返回一个NSDictionary. NSCFDictionary是一个私有子类,对这个讨论无关紧要。所以看起来你会检索类似的东西:

NSDictionary * responseDictionary = ...;
NSArray * dataArray = [responseDictionary objectForKey:@"data"];
for (NSDictionary * dataPair in dataArray) {
  NSLog(@"val: %@, date: %@", [dataPair objectForKey:@"val"], [dataPair objectForKey:@"date"]);
}
于 2010-06-14T16:37:25.630 回答