【太極創客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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 資料交換格式:Protocol BufferProtocol
- JSON筆記,用於資料交換JSON筆記
- 黑客、極客和創客黑客
- 自學PHP筆記(二)PHP資料型別PHP筆記資料型別
- ESP8266使用筆記筆記
- [原創]■■易格式初步研究筆記■■筆記
- JSON資料交換格式有幾種?JSON
- Java自學筆記⑪Java筆記
- Bond——大資料時代的資料交換和儲存格式大資料
- 極光筆記 | 極光服務的信創改造實踐筆記
- JAVA自學筆記(4)Java筆記
- Kotlin 自學筆記Kotlin筆記
- 在.NET使用JSON作為資料交換格式JSON
- Swift學習筆記(2)網路資料交換格式(XML,JSON)解析 [iOS實戰 入門與提高卷]Swift筆記XMLJSONiOS
- Flutter 高效自學筆記(二)Flutter筆記
- Flutter 高效自學筆記(一)Flutter筆記
- JSP自學筆記 (轉)JS筆記
- 【Algorithm&DataStructure】極客時間-資料結構與演算法之美專欄筆記IGoASTStruct資料結構演算法筆記
- Nginx學習筆記3--(極客時間-陶輝)Nginx筆記
- 極光筆記丨資料質量建設實踐筆記
- TypeScript 入門自學筆記(一)TypeScript筆記
- jQuery自學筆記(21-30)jQuery筆記
- 交換資料
- 黃勇的OKR實戰筆記-黃勇-極客時間-返現優惠OKR筆記
- 極光筆記|資料服務平臺一期建設筆記
- python josn包Python
- 自學PHP筆記(一)PHP語法PHP筆記
- 自學PHP筆記(五) PHP運算子PHP筆記
- Electron小白入門自學筆記(一)筆記
- Linux C++ 自學筆記 (轉)LinuxC++筆記
- Linux C++ 自學筆記(轉)LinuxC++筆記
- CSS 之 太極圖CSS
- 《中式太極敏捷》概要敏捷
- 自學資料探勘
- AIX培訓筆記——交換空間AI筆記
- 自學java筆記I 基本型別+轉義字元+資料型別的轉換Java筆記字元資料型別
- DevOps實戰筆記-石雪峰-極客時間-返現24元dev筆記
- 極客程式設計日曆桌面版for mac開發筆記[swift]程式設計Mac筆記Swift