1. 程式人生 > >JSON格式簡介

JSON格式簡介

最近自己在做一個基於ESP8266和STM32的桌面天氣時鐘,需要使用到JSON解析,所以系統學習一下JSON,這篇文章我們先來了解一下JSON的基本格式。

啥是JSON

JSON: JavaScript 物件表示法( JavaScript Object Notation) 是一種輕量級的資料交換格式。 它基於ECMAScript的一個子集。 JSON採用完全獨立於語言的文字格式, 但是也使用了類似於C語言家族的習慣( 包括C、 C++、 C#、 Java、 JavaScript、 Perl、 Python等) 。這些特性使JSON成為理想的資料交換語言。 易於人閱讀和編寫, 同時也易於機器解析和生成(一般用於提升網路傳輸速率)。JSON 解析器和 JSON 庫支援許多不同的程式語言。 JSON 文字格式在語法上與建立 JavaScript 物件的程式碼相同。 由於這種相似性, 無需解析器, JavaScript 程式能夠使用內建的 eval() 函式, 用 JSON 資料來生成原生的 JavaScript 物件。JSON 是儲存和交換文字資訊的語法。 類似 XML。 JSON 比 XML 更小、 更快, 更易解析。JSON 具有自我描述性, 語法簡潔, 易於理解。

JSON說白了,就是一串字串只不過元素會使用特定的符號標註,很多API介面的返回資訊都是JSON格式的。

{} 雙括號表示物件。

“” 雙引號內是屬性或值。
冒號表示後者是前者的值(這個值可以是字串、數字、也可以是另一個josn陣列或json物件)

[] 中括號表示陣列,可以包含多個JSON物件

所以 {“name”: “Michael”} 可以理解為是一個json物件,它包含了一個鍵值對,物件也可以包含多個鍵/值對。

一個簡單的JSON物件

{
	"name": "Andy",  
	"age": 20     
}

這個JSON物件包含兩個鍵值對。

一個簡單的JSON陣列

[{
	"name": "Michael"
}, {
	"name": "Jerry"
}]

包含了兩個JSON物件的JSON陣列。

一個稍微複雜點的JSON物件

{
	"success": "1",
	"result": {
		"timestamp": "1542456793",
		"datetime_1": "2018-11-17 20:13:13",
		"datetime_2": "2018年11月17日 20時13分13秒",
		"week_1": "6",
		"week_2": "星期六",
		"week_3": "週六",
		"week_4": "Saturday"
	}
}

這是一個免費的用來獲取北京標準時間的API介面地址,返回值是JSON字串。這個JSON物件共包含兩個鍵值對,一個鍵success,對應的值是一個字串,另一個鍵result,對應的值是一個JSON物件。所以可以看出,鍵的值,可以是字串,數字,也可以是另一個JSON物件或JSON陣列。

一個很複雜的JSON字串

{
	"results": [{
		"location": {		
			"id": "WS10730EM8EV",
			"name": "深圳",
			"country": "CN",
			"path": "深圳,深圳,廣東,中國",
			"timezone": "Asia/Shanghai",
			"timezone_offset": "+08:00"
		},
		"now": {
			"text": "多雲",
			"code": "4",
			"temperature": "23"
		},
		"last_update": "2018-11-17T20:05:00+08:00"
	}]
}

這是心知天氣獲取3天天氣預報返回的JSON格式資訊。就包含了一個鍵值對,鍵是
results,值是一個數組。

下一篇文章將介紹如何使用cJSON庫,來完成JSON的解析,來得到我們想要的值。

歷史精選文章:

微信掃碼關注我的公眾號

不定期更新電子嵌入式方面的個人學習筆記和技術總結,歡迎大家互相學習交流!