【太極創客esp8266自學筆記】資料交換格式:JOSN
最近實習,智慧家居相關,需要用esp8266開發。之前沒學習過8266,b站上找到【太極創客esp8266】的相關教程,透過幾天學習,感覺還是比32簡單很多的,上手很快,不需要呼叫很底層的東西。但是呢,自己記性差,怕自己總忘記,就索性計劃看完影片自己總結一下,然後手敲知識點,加深記憶,也便於之後又忘了能回來看看。而且太極創客的教程講的是真滴細【在此感謝太極創客的免費教學影片】
JSON 之前學習爬蟲的時候就見到過,當時只知道跟txt,什麼的類似,它是一種格式,拿到之後調包提取就完事了,但具體是什麼東西,沒了解過。當時到這塊的時候就雲裡霧裡的,現在學了這塊後算是薄雲見日啦!
一、JSON是什麼?
JSON(JavaScript Object Notation) 意為JavaScript物件標記法,雖然名字有JS但不意味著就只是面向JS的,它只是遵循JS的語法,可以內嵌於任何語言。是一種非常常見的資料交換格式。
相比於XML,少了反人類的標籤,具有良好的可讀性,比較銀杏花(霧。創始人聲稱永不升級,就說明json具有長期的穩定性。
二、構成
1.基本元素
資料以“名”“值”對呈現
資料“名”和“值”之間由冒號分隔
大括號{ }用於標註物件內容
中括號[ ]用於標註陣列內容
逗號用於分隔資料、物件、陣列
"資料名":JSON資料值
"Year":2016
"URL":"
冒號:後面的值可以是{ }也可以是[ ]
物件不能直接包含{物件}與[陣列]
陣列可以包含{物件}與[陣列]但不能直接存放資料(“資料名”:JOSN資料值)
(相關示例,源自太極創客官網例子):
{
"results": [
{
"location": {
"name": "Beijing",
"country": "CN"
},
"now": {
"text": "Clear",
"code": "1",
"temperature": "3"
},
"last_update": "2020-03-01T20:10:00+08:00"
}
]
}
三、JSON解析
Arduino下ArduionJson庫,解析過程:
1.對單一物件JSON解析:
/**********************************************************************
專案名稱/Project : 零基礎入門學用物聯網
程式名稱/Program name : arduinojosn_1_object
團隊/Team : 太極創客團隊 / Taichi-Maker ()
作者/Author : CYNO朔
日期/Date(YYYYMMDD) : 20200424
程式目的/Purpose :
此程式用於演示如何使用arduinojson庫解析以下json資訊。該json包含一個物件,
物件中有一個資料。
{
"name": "taichi-maker",
"number": 1
}
-----------------------------------------------------------------------
本示例程式為太極創客團隊製作的《零基礎入門學用物聯網》中示例程式。
該教程為對物聯網開發感興趣的朋友所設計和製作。如需瞭解更多該教程的資訊,請參考以下網頁:
http:///homepage/esp8266-nodemcu-iot/
***********************************************************************/
#include
void setup() {
Serial.begin(9600);
Serial.println("");
// 重點1:DynamicJsonDocument物件
const size_t capacity = JSON_OBJECT_SIZE(2) + 30;
DynamicJsonDocument doc(capacity);
// 重點2:即將解析的json檔案
String json = "{\"name\":\"taichi-maker\",\"number\":1}";
// 重點3:反序列化資料
deserializeJson(doc, json);
// 重點4:獲取解析後的資料資訊
String nameStr = doc["name"].as();
int numberInt = doc["number"].as(); 大連婦科醫院哪個好
// 透過串列埠監視器輸出解析後的資料資訊
Serial.print("nameStr = ");Serial.println(nameStr);
Serial.print("numberInt = ");Serial.println(numberInt);
}
void loop() {}
2.對陣列JSON解析
/**********************************************************************
專案名稱/Project : 零基礎入門學用物聯網
程式名稱/Program name : arduinojosn_2_array
團隊/Team : 太極創客團隊 / Taichi-Maker ()
作者/Author : CYNO朔
日期/Date(YYYYMMDD) : 20200424
程式目的/Purpose :
此程式用於演示如何使用arduinojson庫解析以下json資訊,該json包含一個陣列,
陣列有兩個元素,每個元素都是一個物件,每一個物件都有一個資料。
[
{
"name": "taichi-maker"
},
{
"website": ""
}
]
-----------------------------------------------------------------------
本示例程式為太極創客團隊製作的《零基礎入門學用物聯網》中示例程式。
該教程為對物聯網開發感興趣的朋友所設計和製作。如需瞭解更多該教程的資訊,請參考以下網頁:
http:///homepage/esp8266-nodemcu-iot/
***********************************************************************/
#include
void setup() {
Serial.begin(9600);
// 重點1:DynamicJsonDocument物件
const size_t capacity = JSON_ARRAY_SIZE(2) + 2*JSON_OBJECT_SIZE(1) + 60;
DynamicJsonDocument doc(capacity);
// 重點2:即將解析的json檔案
String json = "[{\"name\":\"taichi-maker\"},{\"website\":\"\"}]";
// 重點3:反序列化資料
deserializeJson(doc, json);
String nameStr = doc[0]["name"].as();
String websiteStr = doc[1]["website"].as();
// 透過串列埠監視器輸出解析後的資料資訊
Serial.print("nameStr = ");Serial.println(nameStr);
Serial.print("websiteStr = ");Serial.println(websiteStr);
}
void loop() {}
基本步驟:1.設定動態json物件,並設定空間大小
其中 JSON_ARRAY_SIZE(n) JSON_OBJECT_SIZE(n)表示 陣列和物件相應的大小 後面加的數字為JSON解析需要提供的額外空間
而計算計算capacity可以使用ArduinoJson官網的線上工具直接提供
2.放入要解析的json檔案
3.解析json資料
4.解析後的資料放入變數中 ,之後輸出
doc[0]中的0 代表資料中第0個值
總結
基本上ArduionJson庫對json的基礎用法就是這樣,後面也有利用兩個esp8266來互傳json資料的,現在還沒用到,等之後用到了,再回來寫一些總結
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70005147/viewspace-2792249/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- JSON筆記,用於資料交換JSON筆記
- JSON資料交換格式有幾種?JSON
- 在.NET使用JSON作為資料交換格式JSON
- Python——格式轉換的學習筆記Python筆記
- Bond——大資料時代的資料交換和儲存格式大資料
- ESP8266使用筆記筆記
- 自學PHP筆記 (三) 型別轉換PHP筆記型別
- 自學PHP筆記(三) 型別轉換PHP筆記型別
- python-資料交換Python
- Nginx學習筆記3--(極客時間-陶輝)Nginx筆記
- 自學PHP筆記(二)PHP資料型別PHP筆記資料型別
- 自學java筆記I 基本型別+轉義字元+資料型別的轉換Java筆記字元資料型別
- 數倉的兩種輕量級資料交換格式:json與jsonbJSON
- MysqlsqoopHDFS 資料交換實驗MySqlOOP
- Hive資料格式轉換Hive
- Git極簡學習筆記Git筆記
- 如何使用 Protobuf 做資料交換
- 信創雲盤,解決雙系統切換的資料交換同步問題
- SARIF:靜態分析結果交換格式
- Java自學筆記⑪Java筆記
- 極光筆記 | 極光服務的信創改造實踐筆記
- COCO資料集格式互換
- layui tree資料格式轉換UI
- 資料庫學習筆記資料庫筆記
- 工業乙太網交換機在工業自動化中的應用
- 乙太網交換機埠型別有哪些?型別
- 資料的交換輸出 hd 2016
- 前後端資料交換互動後端
- Python多程式之資料交換PipePython
- python--進位制轉換和資料交換Python
- .NET 6學習筆記(6)——SSL證書的匯出和格式轉換筆記
- mxnet資料格式轉換為tensorflow,pytorch資料PyTorch
- 工業乙太網交換機在硬體和軟體方面的創新趨勢
- JAVA自學筆記(4)Java筆記
- PHP 資料加密 (學習筆記)PHP加密筆記
- 1029學習筆記 資料庫筆記資料庫
- 資料結構學習筆記資料結構筆記
- python學習筆記:資料庫Python筆記資料庫