白话说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,谢谢收看。


关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章