【问题标题】:Objective C read JSON from URL into NSDictionaryObjective C 从 URL 读取 JSON 到 NSDictionary
【发布时间】:2015-02-11 01:37:58
【问题描述】:

所以我正在制作一个应用程序来获取用户的当前位置,然后将纬度和经度坐标发送到此 URL,以查看附近有哪些所需的商店。我能够做我刚才提到的所有事情,但不知道如何阅读网页内容的内容并使用它来形成表格视图/以最短距离排列等。我做了一些研究并发现这是JSON,并设法使用 NSJSONSerialization 将 URL 中的内容解析为 NSDictionary。我不确定的是如何阅读包含 JSON 语法的 NSDictionary 的内容。我需要“名称”、“距离”、“格式化地址”等键,并按“距离”升序排列我的数据在 UITableView 中。

这是我从 URL: 获取的 JSON 脚本的屏幕截图

【问题讨论】:

  • 到目前为止你尝试过什么?问题是什么?您可以像访问任何其他字典一样访问已解析 JSON 的键,所以我不确定您想要什么。
  • 这里有成千上万个关于如何从 JSON 有效负载中访问值的问题。 (这真的很奇怪,因为这样做非常简单,而且应该很直观。)
  • 我不知道如何阅读字典。我想要一组场地,其中包含他们的姓名、地址等。@jshier
  • 然后去 json.org 学习 JSON 语法。只需 5-10 分钟即可学会。

标签: ios objective-c json uitableview


【解决方案1】:

您可以通过以下方式访问不同场所的NSArray

  NSArray* locationsArray = jsonDictionary[@"response"][@"venues"];

从那里您可以访问所有位置数据。我将使用CLLocation 属性为这些位置创建一个新模型类,以存储经度和纬度以及距离属性。遍历数组并实例化模型,同时计算与设备当前位置的距离:

NSMutableArray *locationObjectsArray;
for (NSDictionary *locationDict in locationsArray)
{
    Location *newLocation = [Location alloc] initWith...];
    newLocation.distance = [newLocation.coordinate distanceFromLocation:deviceLocation];
    [locationObjectsArray addObject:newLocation];
}

NSArray * results = [sortedLocations sortedArrayUsingDescriptors:@[[[NSSortDescriptor alloc] initWithKey:@"distance"
                                                                              ascending:YES]]];

这应该会为您提供一个按与设备的距离排序的位置数组,您现在可以在表格中显示这些位置。

【讨论】:

    猜你喜欢
    • 2014-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多