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

為什么都反對(duì) XML 而支持使用 JSON

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

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

我們都知道 JSON 和 XML 設(shè)計(jì)的初衷里都包含一點(diǎn)是對(duì)人類友好, 所以兩者在這方面屬于競爭關(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 描述, 將會(huì)變成:

{
  "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ù)會(huì)比 JSON 更符合人類對(duì) UI 布局的描述, JSON 在這個(gè)場景中會(huì)更加偏向?qū)C(jī)器友好.

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

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

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

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


手記を発表する

人気のある見出し語