ArduinoJson adalah library pemrosesan data berformat JSON yang ditujukan untuk pemrograman bahasa C++ untuk embedded-system. Sebelumnya, saya sudah menulis beberapa artikel tentang hasil eksperimen menggunakan library ArduijoJson pada board Arduino UNO. Berikut ini adalah beberapa artikelnya, silakan dibaca, semoga bermanfaat.

Pada eksperimen ini, saya mencoba menggunakan library ArduinoJson versi Header-Only.

Header-only library dalam konteks pemrogrman C/C++ adalah sebuah library dimana semua definisi, makro, fungsi, struktur dan class ditulis dalam sebuah file header (.h). Library dengan model seperti ini sangat mudah digunakan, tinggal mengikutsertakan file library tersebut dengan:

#include "header-only-lybrary.h"

Karena cukup ditambahkan ke kode program aplikasi dengan #include, maka header-only library tentunya tidak perlu dikompilasi secara terpisah. Ini adalah salah satu keuntungan dari header-only library atau single-file library.

Download ArduinoJson Header-Only

Sebelum kita berkeksperimen, kita download dulu file header ArduinoJson. Berikut ini adalah link dari single-file header ArduinoJson.

https://github.com/bblanchon/ArduinoJson/releases/download/v6.18.4/ArduinoJson-v6.18.4.h

Untuk mempersingkat pengetikan, saya mengubah nama file menjadi ArduinoJson.h. Hanya menghilangkan bagian versi saja, nama tetap ArduinoJson kok, hehehe…

Kode Program

Simak kode programnya berikut ini.

// Nyobain ArduinoJson Header-Only Library
// Chandra MDE - teknikelektrolinks.com
// 17 September 2021

#include <iostream>
#include <string>
#include "ArduinoJson.h"

using namespace std;

int main()
{
    StaticJsonDocument<512> MyJsonDoc;
    string pretty_json_string;

    const char *s = "{\"Name\":{\"First\":\"Chandra\", \"Last\":\"MDE\"}, \"WA\":\"+62-882-3560-7047\", \"Website\":[\"https://teknikelektrolinks.com\", \"https://telinks.wordpress.com\"]}";

    deserializeJson(MyJsonDoc, s);

    cout << "Data JSON:\n" << MyJsonDoc << endl <<  endl;
    cout << "Name         : " << MyJsonDoc["Name"] << endl;
    cout << "  First Name : " << MyJsonDoc["Name"]["First"] << endl;
    cout << "  Last Name  : " << MyJsonDoc["Name"]["Last"] << endl;
    cout << "Whatsapp     : " << MyJsonDoc["WA"] << endl;
    cout << "Website      :" << endl;

    for (int i=0; i<MyJsonDoc["Website"].size(); i++)
        cout << "  " << i+1 << ". " << MyJsonDoc["Website"][i] << endl;

    MyJsonDoc["Website"][2] = "http://www.usbinov.com"; 

    serializeJsonPretty(MyJsonDoc, pretty_json_string);

    cout << endl << "Pretty (indented) JSON String:" << endl;
    cout << pretty_json_string << endl;

    return EXIT_SUCCESS;
}

Pembahasan Program

Pada kode program di atas terdapat sebuah variabel char *s yang berisi data string berformat JSON.

const char *s = "{\"Name\":{\"First\":\"Chandra\", \"Last\":\"MDE\"}, \"WA\":\"+62-882-3560-7047\", \"Website\":[\"https://teknikelektrolinks.com\", \"https://telinks.wordpress.com\"]}"; 

Data ini di deserialisasi dengan perintah:

deserializeJson(MyJsonDoc, s);

Selanjutnya, program menampilkan MyJsonDoc menggunakan cout.

cout << "Data JSON:\n" << MyJsonDoc << endl <<  endl;

Lho?? Kok enak sekali langsung pakai cout ???

ArduinoJson memang joss. Pembuatnya banyak dipuji karena benar-benar memikirkan kemudahan penggunaan library ArduinoJson. Belum lagi dokumentasinya, wih… kelas wahid!!!, layak dijadikan panutan.

Operator << telah di overloading juga, berikut kode programnya dalam libarry ArduinoJson:

#if ARDUINOJSON_ENABLE_STD_STREAM
template <typename T>
inline typename enable_if<IsVisitable<T>::value, std::ostream &>::type
operator<<(std::ostream &os, const T &source) {
  serializeJson(source, os);
  return os;
}
#endif

Lanjut ke pembahasan program eksperimen kita.

Setelah menampilkan MyJsonDoc menggunakan cout, program menampilkan rincian data, kode programnya adalah sebagi berikut:

    cout << "Name         : " << MyJsonDoc["Name"] << endl;
    cout << "  First Name : " << MyJsonDoc["Name"]["First"] << endl;
    cout << "  Last Name  : " << MyJsonDoc["Name"]["Last"] << endl;
    cout << "Whatsapp     : " << MyJsonDoc["WA"] << endl;
    cout << "Website      :" << endl;

    for (int i=0; i<MyJsonDoc["Website"].size(); i++)
        cout << "  " << i+1 << ". " << MyJsonDoc["Website"][i] << endl;

Perhatikan betapa mudahnya program mengakses data-data dari dokumen JSON.

Dan sebagai penutup program, kita coba fungsi serialisasi dengan format tampilan yang cantik. Namun sebelumnya, kita coba tambahkan data pada array “Website” dengan perintah:

 MyJsonDoc["Website"][2] = "http://www.usbinov.com";

Dan kita serialisasi dengan tujuan variabel char *pretty_json_string dan tampilkan.

    serializeJsonPretty(MyJsonDoc, pretty_json_string);
    
    cout << endl << "Pretty (indented) JSON String:" << endl;
    cout << pretty_json_string << endl;

Screenshot Hasil Eksekusi Program

Nah, demikianlah sedikit eksperimenkita dengan ArduinoJson. Ini baru permulaan karena masih banyak yang harus dipelajari tentang ArduinoJson. Eksperimen ini sekedar menunjukkan betapa mudahnya ArduinoJson dan meskipun namanya ArduinoJson, tapi tidak hanya digunakan untuk platform Arduino.

Sampai ketemu pada eksperimen-eksperimen selanjutnya. Semoga bermanfaat.

Pelatihan PRIVAT Pemrograman

Kami melayani Pelatihan PRIVAT Pemrograman dan juga melayani pembuatan hardware dan software custom sesuai dengan kebutuhan Anda.

Silakan menghubungi kami melalui Whatsapp 0882-3560-7047.

Kunjungi Situs Kami

Kunjungi situs kami di https://teknikelektrolinks.com. Ada 2 produk timer baru yang detilnya dapat Anda baca melalui link berikut ini: