【发布时间】:2016-08-19 03:21:17
【问题描述】:
我正在使用 Open Weather API,它建议使用 cityID 搜索以获得最佳和准确的结果。我正在使用 CLPlacemark 获取 cityName,我将在 Open Weather 提供的 JSON 文件(“city.list.us.json”)中搜索该 cityName 以获取 cityID。该 JSON 文件看起来像这样:
{"_id":4070245,"name":"Jones Crossroads","country":"US","coord":{"lon":-85.484657,"lat":31.21073}}
{"_id":4344544,"name":"Vernon Parish","country":"US","coord":{"lon":-93.183502,"lat":31.11685}}
{"_id":4215307,"name":"Pennick","country":"US","coord":{"lon":-81.55899,"lat":31.313}}
{"_id":5285039,"name":"Black Bear Spring","country":"US","coord":{"lon":-110.288139,"lat":31.386209}}
{"_id":4673179,"name":"Bee House","country":"US","coord":{"lon":-98.081139,"lat":31.40266}}
{"_id":4047656,"name":"Provo","country":"US","coord":{"lon":-94.107697,"lat":34.037609}}
{"_id":5493998,"name":"Tejon","country":"US","coord":{"lon":-105.28611,"lat":34.58979}}
{"_id":5815135,"name":"Washington","country":"US","coord":{"lon":-120.501472,"lat":47.500118}}
{"_id":5391891,"name":"San Dimas","country":"US","coord":{"lon":-117.806732,"lat":34.106682}}
{"_id":4056099,"name":"Coffee County","country":"US","coord":{"lon":-86.000221,"lat":31.41683}}
我见过很多例子,你会阅读整个文件,但在这里我必须逐行阅读,并根据我的 cityName 检查它以获取 cityID。如果您能告诉我这里的路,我将不胜感激。
【问题讨论】:
-
这不是有效的 JSON。那是 10 个字典,而 JSON 文件的根必须是数组或字典。我想这实际上是一个包含 10 个字典的数组,对吗?
-
@AlexanderMomchliov 不。这是一个大约 20000 行的 JSON 文件,我认为每一行都是一个字典。
-
尝试其他问题中链接的答案。遍历文件中的每一行,然后对您要查找的城市进行普通的旧字符串搜索。这样,您就不会花费大量计算时间来解析您不会使用的 JSON。
-
@AlexanderMomchliov 我认为你是对的。这不是有效的 JSON。开放天气的耻辱。如果我让它们成为逗号分隔的字典数组,它就像一个魅力。所以我今天学到了一些非常重要的东西。 JSON 文件的根必须是字典数组。
标签: ios json swift ios9 openweathermap