2012-09-25 32 views

回答

4

書面的TFL API文檔中此API不是標準JSON。實際上,我們最好將其解析爲CSV,但請注意,因爲我發現某些響應不一致,其中第一行可能有6個字符串,而第二行可能有5個,而缺少的字段未被標識爲空字符串,但僅省略。這種使用CSV解析器進行解析的方法會導致錯誤,因爲您可能永遠不知道省略了什麼。

我也搜索瞭解決方案,我能找到的最好的是另一個API,它提供標準的JSON,但只通過stopCode請求返回公交車站倒計時。

使用此鏈接訪問它。 http://countdown.tfl.gov.uk/stopBoard/75288

林驚訝,爲什麼TFL使用這個API爲自己的應用程序,但沒有實現公共API返回良好JSON像這樣的。

+0

鏈接也許?到你找到的API。 –

+0

已更新的答案請參閱我的意見 –

+0

您不應使用CSV解析器,因爲它不是CSV。請參閱我的答案,瞭解如何逐行解析它。 –

0

此API不是標準的JSON,如TFL API文檔中所寫。獲取內容後,您可以更改該格式。使用這個鏈接http://jsonlint.com/它會驗證你的json格式。所以你可以很容易地理解JSON格式錯誤

獲得內容後做

JSONArray jArray = new JSONArray("["+ result.replaceAll("]", "],").toString() + "]") 

現在你得到適當的JSON數組跳過jArray零位置,這是 - URA版陣列。

+0

Bette r還使用了一些CSV分析功能,可以讓你以對象的形式訪問這些字體。但是這仍然不一致,因爲我發現這些字段沒有正確填充。例如,每行返回7個字段的請求有時會在某些行上返回5或6。由於缺少的字段未被識別爲空字符串,解析器永遠不會知道缺少哪個字段。 –

0

根據TFL文檔,它不是一個完整的JSON對象。您將每行視爲單獨的JSON對象。這樣,如果/當您移動到流式傳輸模式時,您可以繼續接收對象並在流式傳輸時解釋它們。此外,您還可以使用JSON數組中的第一個元素來確定如何處理該特定行,或者在某些情況下需要刷新基礎數據。