2013-04-21 30 views
0

請不要打我問。我找不到任何可以幫助我理解的信息。什麼使用XML或JSON?

我已經編程了兩年,而且我還沒有使用過JSON和XML。我能用JSON或XML做什麼我無法用數據庫做什麼?我們只是將它們用作配置文件?

+2

在應用程序之間或在文件中傳輸數據。 – SLaks 2013-04-21 21:09:44

+0

另請參閱:http://stackoverflow.com/questions/383692/what-is-json-and-why-would-i-use-it和http://stackoverflow.com/questions/3536893/what-are-在-優點和利弊-的-XML和JSON的。 – alecxe 2013-04-21 21:14:11

+0

@SLaks謝謝老兄,那就是我需要的。我不明白所有的詳細文章。 – user1534664 2013-04-21 21:22:01

回答

1

雖然其他答案是本質上正確(兩者都是數據交換的通用選項),但值得注意的是有一些重要的區別。 XML是爲處理文檔而構建的。 JSON用於描述對象。

  1. 字符編碼,解析和驗證。 XML是爲了讓解析器自動處理這個問題而構建的,JSON並不是那麼重要。
  2. 簡單,緊湊。 XML根本無法像JSON那樣做到這一點。

因此,如果你必須寫一些東西,將數據轉儲到一個文件,該文件被轉移SANS(描述mime類型,字符編碼或其他公約)的任何元數據,XML可以是優越因爲您可以使用適當的聲明(和名稱空間)將必要的元數據嵌入到數據中。當涉及到「文檔」時,這尤其重要:JSON根本沒有可以很好地描述語言環境的原語,並且沒有一種理解標準的方法可以被所有解析器理解。因此,如果有人做了一件令人難以置信的事情,比如將你的UTF-8編碼的JSON字符串轉換爲Shift-JIS,那好運氣讓任何解析器以通用的方式來理解。 XML解決了這個問題(它也提供了語言支持)。另一方面,如果你想要做的只是在高度控制的設置中交換一堆對象(即字符編碼,語言等都是明確定義的參數),因此你不必擔心任意的奇怪的是你的方式 - 然後JSON提供了一個更緊湊的序列化格式,這也是(可能)更容易閱讀大多數程序員。最後,JSON特別適用於Web應用程序,因爲它本身恰好是有效的JavaScript。雖然使用類似eval的方式將JSON視爲JavaScript代碼的一部分,但對於使用任意JSON不是一種好的安全措施;它可以幫助簡化您可以完全控制的Web應用程序的任何前端的「啓動和運行」階段(您需要做的就是`eval',但是對於必須使用的代碼任意的JSON,這是一個可怕的想法,因爲這可能會使您暴露於其他網站以及您自己的安全漏洞)。

+0

我給你接受的答案,因爲有了更多的細節,你也幫助我更好地理解了XML和JSON之間的區別。謝謝:) – user1534664 2013-04-21 21:51:20

4

XML和JSON是通用的序列化格式。只要您想以簡單的方式在應用程序之間交換數據,就可以使用它們。您不需要創建自己的文件格式。您可以使用標準化的基礎設施(序列化器,庫)。

例如,您如何將結構化數據(例如有關銷售或客戶的信息)發送給第三方?您需要就數據格式達成一致。 XML和JSON對此非常方便。您可以輕鬆生成JSON,其他開發人員將立即瞭解其結構並能夠使用很少的代碼對其進行反序列化。

+0

良好的信息,感謝老兄。但我仍然有一些問題。那麼XML和JSON用於與第三方和其他程序共享數據?像YouTube的飼料? – user1534664 2013-04-21 21:34:05

+0

是的,這是一個重要的應用程序。當然,您也可以爲自己儲存數據以供日後使用。關鍵問題是:如果沒有*這些格式,您將如何交換或存儲數據?你不得不將自己的格式轉換爲很少的好處。 (或使用數據庫,但這是完全不同的東西)。 – usr 2013-04-21 22:09:55

1

作爲一個真實的例子,我曾經在一個與Ruby on Rails服務器交互的iOS應用上工作。服務器有一個SQL數據庫和許多應用程序的邏輯。服務器接收來自iOS客戶端的請求,對相關數據進行檢索和操作,然後將結果呈現爲JSON,並將其發送回客戶端以用於任何情況。這是Ruby服務器應用程序向Objective-C iOS應用程序生成數據的簡單方法。

+0

偉大的例子夥計,謝謝。我打算很快考慮使用它。示例總是有助於澄清事情。 – user1534664 2013-04-21 21:52:08