2010-12-18 49 views
4

我在October中編寫了一個JSON編譯器和反編譯器。針對其他人的JSON運行了一堆tests後,我很滿意它的工作,並繼續前進。我主要關注編譯器,因爲這通常是困難的部分,試圖理解人們可以拋給你的所有變量。正如所宣稱的那樣,JSON非常易於使用(雖然不像以前那樣容易,恕我直言)。不管。何時使用JSON列表

現在,我們已經有了這種情況已經開始獲得牽引力,通過River2顯示的news流的JSONification的格式。一些Javascript開發者在這個數據的渲染上是working,其中一些現在已經比我使用的更好,但沒有一個功能足以讓我切換到。

但是JSON存在問題。

每組新聞位都被組織成一堆標量數據,如feed名稱,url,上次閱讀Feed時等。然後有一個或多個新聞項目。如果有一個項目,我只包含一個名爲item的結構體。如果有多個我包含一個結構列表。該列表是命名的項目。我明白這是JSON中重複元素的慣例。

http://scripting.com/images/2010/12/17/jsonShot.gif

在上面的屏幕快照,有兩個 「updatedFeed」 元素。第一個只有一個項目,第二個有不止一個。

這會給某些語言的人帶來問題,因爲(顯然)他們很難在事先不知道類型的情況下處理對象。所以他們說解決方案很簡單,總是把它列入清單。對他們簡單,但... :-)

但是這不是那麼簡單在我的一端。因爲我使用的是通用的JSON序列化程序,並且無法知道「item」應該始終是列表。除非...

處理這個(我不喜歡也不會這麼做)的一種方法是將所有東西都列出來。

我只是想知道其他JSON生產環境在這樣的情況下做什麼。

+2

「item」通常表示單個項目。也許把它稱爲「項目」會更好,因爲它意味着一個序列,即使序列實際上只有一個元素。 – 2010-12-18 22:15:36

+1

爲什麼你不能在任何情況下都將它列入清單?數據在您的應用程序中如何表示?你用什麼語言? – jwueller 2010-12-18 22:15:48

+2

我認爲這將有助於退後一級,並討論將要轉換爲JSON的語言。自從它第一次出現以來,我還沒有使用過Frontier(真的只是在戳它),但在我看來,你應該能夠從單入口數組/列表開始,然後你的序列化程序應該沒有問題。 – ohmantics 2010-12-18 22:40:10

回答

2

JSON是一種序列化格式。如果每次相同(期望)對象具有相同的模式,或者接收器的構建靈活或忽略更改的部分,則它通常效果最佳。

在這種情況下,聽起來新聞流總是應該有相同的格式,所以它聽起來像你應該調整你正在「編譯」到JSON的對象,以便它總是具有相同的結構,或者使用類似JSON Schema的東西。