我目前正在从事基于 TFL 的项目。我想解析这个链接中提供的 json 文件: http: //countdown.api.tfl.gov.uk/interfaces/ura/instant_V1 所以请帮帮我
3 回答
此 API 不是TFL API 文档中所写的标准JSON 。实际上,我们最好将其解析为 CSV,但要小心,因为我发现有些响应不一致,第一行可能有 6 个字符串,而第二行可能有 5 个字符串,缺少的字段未标识为空字符串,只是被省略了。这种方式使用 CSV 解析器进行解析会导致错误,因为您可能永远不知道省略了什么。
我还搜索了解决方案,我能找到的最好的方法是另一个提供标准 JSON 但仅通过stopCode
请求返回巴士站倒计时的 API。
使用此链接访问它。 http://countdown.tfl.gov.uk/stopBoard/75288
我很惊讶为什么 TFL 将这个 api 用于他们自己的应用程序,但没有实现公共 api 来返回像这样的好 JSon。
此 API 不是 TFL API 文档中所写的标准 JSON。因此,在获取内容后,您可以更改该格式。使用此链接http://jsonlint.com/它将验证您的 json 格式。这样您就可以轻松理解json格式错误
获取内容后执行此操作
JSONArray jArray = new JSONArray("["+ result.replaceAll("]", "],").toString() + "]")
现在你得到了正确的 json 数组跳过 jArray 第 0 个位置,这是 - URA 版本数组。
It is not a single full JSON object, as per the TFL documentation. You treat each line as a separate JSON object. This way if/when you move to the streaming mode, you can continue to receive objects and interpreting them as they get streamed to you. Also you use the first element in the JSON array to determine how to process that particular line, or in some cases if you need to refresh the base data.