iT邦幫忙

13

白話說JSON

因有朋友想了解一下JSON是什麼,又覺得json.org太難理解,因此寫了這篇淺顯的白話說JSON。
JSON首先拿一個物件(object)來當資料的容器,也就是拿來裝東西就是了。

這個物件/容器就是一對大括號{},然後括號裡面的東西,都是用key:value這樣的成對結構來組成的。key可以想成是標籤,value就是要加上標籤的東西。

如果容器裡面放的東西不只一樣,那就用逗號分開。綜合以上概念,舉個實例:

{"burger":"cheseburger","drink":"coffee"}

就是一個JSON的資料結構。然後這種結構是可以層層嵌套的,假設剛剛那個配餐是一號餐(combo1)套餐的value,我們就可以用:

{"combo1":{"burger":"cheseburger","drink":"coffee"}}

JSON的key一定要是字串(string), 用雙引號把文字包裝來,原則上unicode的文字都可以使用,所以用中文也行,不過實務上比較少這樣用。

而value比起key就多彩多姿了,它除了可以放上面使用的字串之外,也可以放陣列(array)、數字(number)、true、false(邏輯上的真、假值,不需要雙引號)、物件(object,這就是為什麼可以出現嵌套結構的原因),以及代表什麼都沒有的null值。

陣列是什麼東西呢,它是用方括號[]來表示一堆資料的達表方式,通常這些資料通常都被拿來表達性質相近的東西,例如:

[1,2,3,4,5]

["google",”yahoo”,"microsoft","facebook"]

所以,如果上面點餐的例子來改寫,我們假定這家速食店買咖啡送果汁,所以drink這一欄放的就不是單項的東西,那就適合用陣例來儲存:

{"combo1":{"burger":"cheseburger","drink":["coffee","orange-juice"]}}

陣列是比較難理解的部份,不過其實也就是這樣而已。

接下來就是數字了,這個就簡單多了。讓我們幫一號餐加上價格:

{"combo1":{"burger":"CheeseBurger ","drink":["coffee","orange-juice"],"price":120}}

數字就是數字囉,不用加上雙引號,直接放上去就是了。

我們還可以玩得更複雜一點,應用剛剛說的陣列,如果這個菜號有一號餐,通常就會有二號餐、三號餐了,我們一樣可以用嵌套的方式來應用。

{"meal":[{"combo1":{...}},{"combo2":{...}},{"combo3":{...}}}]}

一樣,要用JSON就要先有個物件容器,然後我要表達的是所有餐點的列表,所以就是:

{"meal":value}

只是這個vaule是陣列,裡面放了三餐點,用白話來表達就是:

{"meal": [一號餐, 二號餐,三號餐] }

變成JSON的表達方式,就是

{"meal": [

  {"combo1":value},

  {"combo2":value},

  {"combo3":value}

  ] 

}

然後上面的value,都是相同的結構{"burger":value,"drink":value,"price":value}:

{"meal": [

  {"combo1":{"burger":value,"drink":value,"price":value}},

  {"combo2": {"burger":value,"drink":value,"price":value}},

  {"combo3": {"burger":value,"drink":value,"price":value}}

  ] 

}

最後,再把實際的餐點內容填入:

{"meal": [

  {"combo1":{

      "burger": "CheeseBurger" ,     

      "drink": ["coffee","orange-juice"] ,

      "price":120}
  },

  {"combo2": {

      "burger":"Big Mac",

      "drink":["milk-tea","orange-juice"],

      "price":130}
  },

  {"combo3": {

      "burger":"McChicken",

      "drink":["Cola","milk-tea","ice-coffee"],

      "price":160}
  }
 ] 
}

JSON就是這樣子的東西而已。再複雜的結構,就是這些元素在嵌套來、嵌套去。

以上就是白話說JSON,謝謝收看。


2 則留言

0
海綿寶寶
iT邦大神 1 級 ‧ 2012-01-17 11:19:43

簡單明瞭
給你擠霸婚
讚

wordsmith iT邦高手 1 級 ‧ 2012-01-17 16:24:31 檢舉

謝謝

我要留言

立即登入留言