如何从 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
标准化为午夜。 NSDateComponents
和 NSCalendar
的组合将对此有所帮助。那么比较就是调用compare:
并寻找NSOrderedSame
。以上是关于如何从 JsonArray 中获取 NSDictonarys?的主要内容,如果未能解决你的问题,请参考以下文章
如何解决 JSONArray 问题,无法获取数据,Android Studio