亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

為什么都反對 XML 而支持使用 JSON

Original 2016-10-31 16:55:24 489
abstract:我覺得已經(jīng)有非常多的例子說明 JSON 比 XML 具有優(yōu)勢的地方. 我來說一個使用場景是我覺得 XML 比 JSON 有優(yōu)勢的情況 --- UI 數(shù)據(jù)的描述. 我們都知道 JSON 和 XML 設(shè)計的初衷里都包含一點是對人類友好, 所以兩者在這方面屬于競爭關(guān)系. 而在 UI 描述上, 我覺得 XML 是比 JSON 要優(yōu)異很多. 我們先來看一組簡單的數(shù)據(jù)排版:<ui:group 

我覺得已經(jīng)有非常多的例子說明 JSON 比 XML 具有優(yōu)勢的地方. 我來說一個使用場景是我覺得 XML 比 JSON 有優(yōu)勢的情況 --- UI 數(shù)據(jù)的描述.

我們都知道 JSON 和 XML 設(shè)計的初衷里都包含一點是對人類友好, 所以兩者在這方面屬于競爭關(guān)系. 而在 UI 描述上, 我覺得 XML 是比 JSON 要優(yōu)異很多. 我們先來看一組簡單的數(shù)據(jù)排版:

<ui:group layout="vertial">
  <ui:block width="200" layout="horizontal">
    <ui:input value="Search"></ui:input>
    <ui:button>Search</ui:button>
  </ui:block>
  <ui:block width="400"></ui:block></ui:group>

倘若由 JSON 描述, 將會變成:

{
  "type": "ui:group",
  "layout": "vertical",
  "children": [
    {
      "type": "ui:block",
      "width": 200,
      "layout": "horizontal",
      "children": [
        { "type": "ui:input", "value": "search" },
        { "type": "ui:button", "label": "Search" },
      ]
    },
    {
      "type": "ui:block",
      "width": 400,
    },
  ],}

可以看出來, XML 的數(shù)據(jù)會比 JSON 更符合人類對 UI 布局的描述, JSON 在這個場景中會更加偏向?qū)C(jī)器友好.

然而情況還不僅僅是這樣, 我們回過頭來看看上面數(shù)據(jù)中的 ui:button 定義. XML 中的定義, 我采用了 `<ui:button>Label</ui:button>` 的形式, 而在 JSON 中, 我刻意的使用了一個 `label` 字段來簡化 button 數(shù)據(jù)在 JSON 中的復(fù)雜度. 但是這樣做減弱了 ui:button 內(nèi)部嵌套元素的可能性. 倘若我們需要的是一個 icon button, 在 XML 中, 我們可以這么書寫:

<ui:button>
  <icon src="foobar.png"></icon>
  OK</ui:button>

而在 JSON 中, 嵌套結(jié)構(gòu)將會帶來無盡的 Array + Object 的組合, 對人類閱讀并不十分友好.

所以, 并不是所有情況都要反對 XML 而去使用 JSON, 我覺得只有在數(shù)據(jù)需要和代碼實例做映射時, JSON 相對 XML 的優(yōu)勢才能體現(xiàn). 而其他一些使用場景, XML 也好, JSON 也好, 都有各自發(fā)揮的地方.


Release Notes

Popular Entries