如何从 JsonArray 中获取 NSDictonarys?

Posted

技术标签:

【中文标题】如何从 JsonArray 中获取 NSDictonarys?【英文标题】:How to get a NSDictonarys out of JsonArray? 【发布时间】:2013-12-20 17:01:51 【问题描述】:

我正在开发一个 ios - 项目,它将显示一个人的关注者。 有一个正在运行的 Web 服务器从不同的社交网络获取数据,将它们与时间戳一起保存到 SQL 数据库中。 iOS App 发出请求并从 Sql 数据库中获取 Json。我将 Json 转换为 Array 并打印到控制台。

NSString *url = [NSString stringWithFormat:@"http://getdata.php"];
NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:url]];

NSError *error;
NSArray *json = [NSJSONSerialization JSONObjectWithData:data options:0 error:&error];
NSLog(@"%@",json);

输出:

(
    
    date = "2013-12-11";
    facebook = 107;
    instagram = 47;
    twitter = 42;
,
    
    date = "2013-12-12";
    facebook = 107;
    instagram = 45;
    twitter = 42;
,
    
    date = "2013-12-13";
    facebook = 107;
    instagram = 45;
    twitter = 42;
)

所以我想做的是,将 Facebook、Instagram 和 Twitter 关注者与前一天进行比较。我怎么能这样做:获取整个对象,日期是今天。它会打印出来:

    date = "2013-12-13";
    facebook = 107;
    instagram = 45;
    twitter = 42;

感谢您的帮助,对不起我的英语!

【问题讨论】:

你试过简单地使用 NSDictionary 而不是 NSArray 吗? 你拥有的是一个 NSDictionary 对象的 NSArray。要获取 NSDictionary,请索引数组。 @nickAtStack - 这只会错误地命名对象并进一步混淆事物。 提示:查看 NSLog 列表——() 字符围绕着一个数组。 字符围绕着一个字典。 > "我将 Json 转换为数组" 不,你没有。您刚刚将 JSON 序列化为一个表示,它恰好是 Foundation 对象的层次结构,其根对象是 NSArray 或 NSDictionary。 【参考方案1】:

您可以使用一个简单的 for 循环来枚举数组中的所有字典。为了将每一天与前一天进行比较,您必须从索引 1 开始,如下所示:

for (NSUInteger i = 1; i < json.count; i++) 
    NSDictionary *currentDay = json[i];
    NSDictionary *previousDay = json[i-1];

    // Compare the follower counts for each social network here

【讨论】:

这是一个完美的想法,它的工作!但万一网络服务器没有更新这些值。它采用前一天的价值。有没有办法查到日期?如果 date = today 得到字典? @user3123470 是的,有,但这是一个不同的问题,因此应该作为一个单独的问题提出。 我该怎么做:获取整个对象,其中 Date 是今天。 这是我的问题的一部分,但如果你能回答第二个问题,那就太好了. 将每个字典中的NSString 转换为NSDate 并与当前日期进行比较。请记住,NSDate 包含日期和时间,因此您需要将 今天NSDate 标准化为午夜。 NSDateComponentsNSCalendar 的组合将对此有所帮助。那么比较就是调用compare:并寻找NSOrderedSame

以上是关于如何从 JsonArray 中获取 NSDictonarys?的主要内容,如果未能解决你的问题,请参考以下文章

如何获取jsonarray中 某个值

使用 gson 从 JsonArray 中获取值

如何解决 JSONArray 问题,无法获取数据,Android Studio

如何从 JSON.NET 的 JsonArray 中提取单个数组成员?

从改造响应中获取 JSONArray

使用 Hibernate 从 PostgreSQL 中的 JSONArray 获取对象的问题