Format JSON sering digunakan untuk komunikasi data. Disini kita akan belajar ArduinoJson yang digunakan untuk parsing dan membuat data JSON.
Untuk kali ini saya akan mencoba nya di Wokwi.com . Jika belum pernah menggunakan Simulator Wokwi, silahkan bisa dipelajari disini terlebih dahulu.
Langkah 1 : Memilih Board
Saya pilih Arduino Nano saja untuk test program

Langkah 2 : Menambahkan Library ArduinoJson
Untuk menambahkan Library ArduinoJson pada Wokwi Simulator :
- Pilih Tab Library Manager
- Tekan tanda +
- Tulis : arduinojson
- Nanti akan muncul, lalu pilih library tersebut

Setelah menambahkan library selesai, maka akan tampil sebagai berikut :

Langkah 3 : Menulis Program
Dalam program di bawah ini banyak comment yang saya gunakan agar saya pribadi lebih memahami baris-baris perintah yang ditulis.
Silahkan copy paste program berikut.
#include <ArduinoJson.h>
// Untuk Sample bisa dilihat di :
// https://arduinojson.org/v6/example/
void setup() {
// Inisialisasi serial port
Serial.begin(9600);
while (!Serial) continue;
// Alokasi JSON document
//
// Di dalam bracket, 200 adalah kapasitas memory pool dalam bytes.
// Jangan lupa untuk mengganti nilai ini disesuaikan dengan isi JSON document.
// Check arduinojson.org/v6/assistant untuk menghitung kapasitas memory.
StaticJsonDocument<200> doc;
// StaticJsonDocument<N> mengalokasikan memory pada stack, hal ini dapat diganti
// dengan DynamicJsonDocument yang dialokasikan di heap memory.
//
// DynamicJsonDocument doc(200);
// Ada dua jenis pengalokasian memori berdasarkan dari tipe data yang disimpan,
// yaitu alokasi memori stack di mana data akan disimpan dalam alamat memori secara berurutan,
// serta alokasi memori heap di mana data akan disimpan tanpa mempertimbangkan urutan alamat memorinya.
// Biasanya untuk yang sementara dan kecil, disimpan di stack
// JSON input string.
//
// Menggunakan char[], untuk enables "zero-copy" mode. Mode ini menggunakan memory seminimal mungkin
// karena JsonDocument meyimpan pointers ke input buffer.
// Jika menggunakan tipe lain untuk input, ArduinoJson harus copy strings dari
// inputan ke JsonDocument, sehingga kita harus menambahkan kapasitas dari JsonDocument.
char json[] =
"{\"sensor\":\"gps\",\"time\":1351824120,\"data\":[48.756080,2.302038]}";
// Deserialize the JSON document
DeserializationError error = deserializeJson(doc, json);
// Jika proses parsing tidak berhasil.
if (error) {
Serial.print(F("deserializeJson() failed: "));
Serial.println(error.f_str());
return;
}
// Jika berhasil, ambil datanya
//
// disini ada beberapa contoh tipe data : string, angka, dan array
const char* sensor = doc["sensor"];
long time = doc["time"];
double latitude = doc["data"][0];
double longitude = doc["data"][1];
// Tampilkan isinya.
Serial.println(sensor);
Serial.println(time);
Serial.println(latitude, 6);
Serial.println(longitude, 6);
}
void loop() {
}
Saat program di jalankan, maka tampilan Serial Monitor nya sebagai berikut :

Terlihat pada Serial Monitor sudah dapat menampilkan dari masing-masing nilai.
Sedikit catatan perihal StaticJsonDocument ada disini :
StaticJsonDocument adalah JsonDocument yang dialokasikan dalam stack . Karena tidak memanggil malloc() dan free(), StaticJsonDocument sedikit lebih cepat daripada DynamicJsonDocument.
Berhati-hatilah untuk tidak mengalokasikan kumpulan memori terlalu besar di dalam Stack, karena akan menyebabkan Stack Overflow. Gunakan StaticJsonDocument untuk dokumen kecil (di bawah 1KB) dan alihkan ke DynamicJsonDocument jika terlalu besar untuk muat dalam memori Stack.