Để tiếp tục cho chuỗi bài tiếp theo trong chủ để hưỡng dẫn
tự học esp8266 thì mình sẽ tìm hiểu và hưỡng dẫn các bạn sử dụng json 6 trên Arduino.
JSON Là Gì
JSON là một kiểu định dạng dữ liệu trong đó sử dụng văn bản
thuần tuý, định dạng JSON sử dụng các cặp key
- value để lưu dữ liệu sử dụng.
Cấu Trúc Một Chuỗi Json
{"TITLE":"Trợ
Lý","DESCRIBE":"Học Tập","PHONE":"123"}
Mình mới khai báo một Chuỗi Json đơn giản gồm 2 phần đó là
key và value
Mình sẽ giải thích sơ qua như sau
1. Chuỗi JSON được bao lại bởi dấu ngoặc nhọn {}
2. Một
Chuỗi Json gồm 2 phần đó là key và value
Key là từ
khóa để tìm kiếm và trả về kết quả là value
Key
(TITLE)
Value (Trợ
Lý). Value phải đặt trong cặp dấu goặc kép “” khi khai báo
3. Nếu có nhiều dữ liệu (nhiều cặp key => value) thì ta
dùng dấu phẩy (,) để ngăn cách
4. Các key của JSON bạn nên đặt chữ cái không dấu hoặc số,
dấu _ và không có khoảng trắng., ký tự đầu tiên không nên đặt là số
Cách Sử Dụng Json Trên Arduino IDE
Như o trên mình đã tạo ra 1 chuỗi json co bản gồm TITLE
DESCRIBE PHONE nhưng đó là ví dụ cho bạn dễ hiểu về cấu trúc của Json
Thì để có thể sử dụng trên Arduino IDE thì đầu tiên ta phải
khai báo json dưới dạng 1 chuỗi String
Sau đó ta mới sử dụng các lệnh từ thư viện ArduinoJson Dể tạo
1 file kiểu Json
Cách Add Thư Viện ArduinoJson Vào Arduino IDE
Đâu tiên bạn mở Arduino IDE lên
Vào Tools Chọn Manage Libraries
Trong cửa sổ Libraries Manager bạn tìm kiếm ArduinoJson tiếp
tục chọn Version mới nhất (version 6 trở lên nhá) rồi chọn Install
Khai báo thư viện ArduinoJson Cho Arduino IDE
#include <ArduinoJson.h>
Tạp 1 Chuỗi Json Trên Arduino
String Sjson = "{\"TITLE\":\"Trợ
Lý\",\"DESCRIBE\":\"Học Tập\",\"PHONE\":\"123\"}";
Khai báo 1 chuỗi Sjson chứa nội dung cấu trúc chuỗi j son
DynamicJsonDocument Khai Báo Tên Và nhóm bộ Nhớ Chứa tài liệu Json
DynamicJsonDocument TroLy(256);
Tên chứa tài liệ json là TroLy Bộ nhớ 256 byte
deserializeJson phân tích cú pháp đầu vào JSON và đặt kết quả vào một JsonDocument.
deserializeJson(TroLy, Sjon);
phân tích Chuỗi Sjson rồi đặt kết quả vào TroLy Chứa tài liệu
json
serializeJson(doc, Serial); in ra tài liệu Json trong Trợ Lý, ra cửa sổ Serial Monitor
serializeJson(TroLy, Serial);
Lấy Dữ Liệu Từ Jsonas<String> lấy ra kiểu String. Json To String
Title = TroLy["TITLE"].as<String>();
Lấy giá trị của cặp json với key là TITLE kiểu giá trị trả
về được gán vào Title kiểu dữ liệu là json
Lấy Ra Kiểu const char * từ json. Json to const char *
const char* DESCRIBE = TroLy["DESCRIBE"];
Lấy ra kiểu int từ json. Json to int
int phone = TroLy["PHONE"];
Thêm Dữ Liệu Vào Json
TroLy["NATION"] = "VietNam";
Thêm cặp json mới với key là NATION value là VietNam
Kiểm Tra Kích Thước Json
Serial.println(measureMsgPack(TroLy));
Kiêm tra kích thước TroLy Trả về byte
Chương Trình Ví Dụ Json Trên Arduino IDE
/*
Bài 7 ArduinoJson 6
https://trolyhoctap.blogspot.com/
*/
#include <ArduinoJson.h>
String Sjson = "{\"TITLE\":\"Trợ Lý\",\"DESCRIBE\":\"Học Tập\",\"PHONE\":\"123\"}";
String Title = "";
void setup() {
Serial.begin(9600);
Serial.println("bài 7 sử lý json trên arduino");
Serial.print("chuối Sjson là:");
Serial.println(Sjson);
// khai báo tên và nhóm bộ nhớ
DynamicJsonDocument TroLy(256);
//phân tích cú pháp đầu vào JSON và đặt kết quả vào một JsonDocument.
deserializeJson(TroLy, Sjson);
Serial.print("chuỗi TroLy Là:");
// in ra kết qua json
serializeJson(TroLy, Serial);
Serial.println("\n");
// lấy thông tin từ key
// lấy ra kiểu String
Title = TroLy["TITLE"].as<String>();
Serial.print("chuối Title là:");
Serial.println(Title);
//Lấy ra kiểu const char *
const char* DESCRIBE = TroLy["DESCRIBE"];
Serial.print("Mảng DESCRIBE là:");
Serial.println(DESCRIBE);
// lấy ra kiểu INT
int phone = TroLy["PHONE"];
Serial.print("số phone là:");
Serial.println(phone);
// thêm dữ liệu và json
TroLy["NATION"] = "VietNam";
Serial.print("chuỗi TroLy mới Là:");
// in ra kết qua json
serializeJson(TroLy, Serial);
Serial.println("\n");
//kích thước byte của json
Serial.print("kích thước của TroLy:");
Serial.println(measureMsgPack(TroLy));
}
void loop() {
// put your main code here, to run repeatedly:
}
Bạn mở cửa sổ serial monitor lên để kiểm tra code nhá
Cảm ơn các bạn đã theo dõi. mọi thắc mắc hay góp ý các bạn
để dưới mình luận mình sẽ phản hồi và khác phục sớm nhất
0 Nhận xét