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的解析,來得到我們想要的值。
歷史精選文章:
微信掃碼關注我的公眾號
不定期更新電子嵌入式方面的個人學習筆記和技術總結,歡迎大家互相學習交流!