资料、数据的传递在资讯蓬勃发展的今天,几乎是不可避免、天天上演的剧情。譬如:手机讯息的传递、网络档案的分享、各种平台的资料下载,都是您我经常面临的情境。而资料档案的格式虽然多元,多变,普遍且具优势的格式并不多,但其中的Json档案格式被许多资源、系统与平台广泛采用,不论您是否具备资讯背景,绝对是易懂易学且十分值得您花点时间认识与运用的。

JavaScript Object Notation(JSON)是一种结构化资料档案格式,后以纯文字的方式将结构化资料(structured data) 呈现为 JavaScript 物件的标准格式,常用于网站上的资料呈现、传输 (例如将资料从伺服器送至用户端,以利显示网页),所以,要理解(JSON)档案格式,我们就先从JavaScript的物件概念及结构来谈起囉!。

物件的基础概念及结构

在软体系统中,物件(Objects)是物件导向程式设计(OOP)的核心,而在JavaScript中,物件(Objects)是一种资料结构,其内容包含了属性(Properties)和方法(Methods),简单来说就是用来储存资料的容器。JavaScript物件是一种复合资料型态的集合,此集合是由「键值对」(Key-Value Pairs)所组成,描述著(key)与(value)之间的关联。每个键(Key)是一个字串,而物件的值(Value)可以是原始资料型别,例如:数字、字串、布林值等等,也可以是物件型别,例如:物件、阵列、函式等等。最常见的物件宣告方式是使用一对{}来加以宣告,例如:

{
   姓名: "罗小贞",
   年龄: 23,
   会员: true
}

此物件里有三组「键值对」(Key-Value Pairs),第一组键(Key)是一个「姓名」,其值(Value)是字串"罗小贞";第二组键(Key)是一个「年龄」,其值(Value)是整数25;第三组键(Key)是一个「会员」,其值(Value)是布林值 true。对资料库系统略有概念的人,应该可以看出,这不正是一种结构化资料的表达吗?

认识JSON格式

有了物件的基础与概念了,就来谈谈JSON囉!JSON原文是JavaScript Object Notation的缩写,是一种轻量级的资料交换格式,非常容易阅读和撰写,同时也很容易透过程式解析与生成。在此我们就先来科普一下JSON的基本概念、格式、用途和范例,让您更了解、掌控并运用这个极为广泛且普及的资料格式。首先,JSON是一种基于文本的资料交换格式,其源于JavaScript语言,但已被许多其他编程语言所支持。由于其简单、易读的语法和跨平台的兼容性,JSON已成为Web开发中广泛使用的资料格式,尤其适用于API和AJAX应用。因此,许多软体系统、平台,都提供有JSON档案格式的输出。诸如:政府开放平台等官方网站、组织机构供给使用者下载的资料档案格式,除了传统的CSV、TXT、XM、XLS等档案格式外,JSON档案格式也常常是选项之一喔!

JSON格式

JSON格式主要包含两种资料结构:物件(Object)和阵列(Array)。

  1. 物件(Object):物件就是由零个或多个「键值对」(Key-Value Pairs)所组成的无序集合,若集合里有多组「键值对」,则彼此之间用逗号分隔,最外围则以大括号 {} 包裹。而「键值对」里的键(Key)是字串,值(Value)可以是字串、数字、布尔值、null、物件或阵列。例如:

{
 "工号": "E1234",
 "姓名": "杨佑臻",
 "部门": "业务部"
}

  1. 阵列(Array):阵列是由零个或多个元素组成的有序列表,元素与元素之间用逗号分隔,最外围用一对中括号 [ ] 包裹。阵列里元素可以是字串、数字、布林值、null、物件或阵列。例如可以描述擅长那些运动的阵列:

[
  "游泳",
  "篮球",
  "高尔夫球",
[

清单里的元素也可以是物件,因此,拥有多少信用卡的资料也可以如此表示:

[
 {
   "卡别":"VISA",
   "有效日期": "0230"
 },
 {
   "卡别":"Master",
   "有效日期": "0832"
 },
 {
   "卡别":"JCB",
   "有效日期": "0230"
 }
]

简单的说,JSON是以JavaScript语法为基础的物件导向资料格式,其副档名为 .json 的文字档案,不但可以独立使用,在许多程式设计环境里亦可读取(剖析)并产生JSON。JSON可能是物件或字串。当您想从JSON中读取资料时JSON可作为物件;若是要跨网路传送JSON时,就会是字串。因此,您可以使用作简单的Windows 记事本这个文字编辑器来开启、编辑,都不是什么大问题。这样的档案格式正犹如XML标籤式的档案格式一般,极容易跨系统、跨平台的传递与共用。

 

系列文章

(1/5) 物件的概念与结构 
(2/5) 再谈JSON的架构  
(3/5) Power Query的容器  
(4/5) Power Query汇入Json实务范例1  
(5/5) Power Query汇入Json实务范例2