Bilindiği gibi JSON (JavaScript Object Notation) javascript uygulamaları için yapılmış bir tür veri formatıdır. RapidJSON kütüphanesi, c++ için yapılmış yüksek hızlı ve performanslı bir JSON kütüphanesidir. Github ve Dökümanlara tıklayarak ulaşabilirsiniz.Yazımızda VS 2017 için bu kütüphanenin kurulumu ve örnek bir proje yer alacaktır.
Diğer kütüphanelerle karşılaştırmalı benchmarklara aşağıdaki linklerden ulaşabilirsiniz:
https://github.com/miloyip/nativejson-benchmark
https://github.com/mloskot/json_benchmark
https://chadaustin.me/2013/01/json-parser-benchmarking/
1- Kurulum:
- Öncelikle kurulum için Vcpkg aracını kullanacağız. ( Vcpkg kurulu değilse burdaki yazıdan kurulum işlemlerine ulaşabilirsiniz ). Yönetici olarak CMD’mizi başlatın, vcpkg’nin olduğu klasöre CD komutuyla gidin ve alttaki kodu girin:
vcpkg install rapidjson:x64-windows
- 64 bit için yapılmış olan kütüphaneyi kullanacağım için :x64-windows komutunu kullandım. Komutu girdikten sonra kütüphaneleri ve bağımlılıkları otomatik olarak indirip işlemleri yapacaktır. İşlemlerin bitmesini bekleyin.
2- Örnek Proje:
- İşlemler bittikten sonra Visual Studio’da yeni bir Console Application projesi açın.
- Yukardan x64 seçin.
- Ve alttaki kodları girip örnek projemizi çalıştıralım.
#include "stdafx.h" #include <iostream> #include <string> #define RAPIDJSON_NOMEMBERITERATORCLASS #define RAPIDJSON_HAS_STDSTRING 1 #include "rapidjson/document.h" #include "rapidjson/writer.h" #include "rapidjson/stringbuffer.h" #include "rapidjson/prettywriter.h" using namespace std; using namespace rapidjson; void stringtenJSON() { //Yazimiz string stringdegiskeni = "test yazisi"; //Dokuman olustur Document d; d.SetObject(); Document::AllocatorType& allocator = d.GetAllocator(); //String degeri olustur Value s; s.SetString(StringRef(stringdegiskeni)); //string degerini iceren yazi ogesini ekle d.AddMember("veri", s, allocator); //jsonu stringe cevirme islemi (cout'tan okumammiz icin) StringBuffer sb; PrettyWriter<StringBuffer> writer(sb); d.Accept(writer); // (GetString) stringbufferi stringe cevirme icin cout << sb.GetString() << endl; } void JSONokuma() { //JSON verimiz string message = "{\"sayi\":1}"; //Dokuman olustur Document d; //JSON kodunu ayristir (const chara donusturerek (c_str)) d.Parse(message.c_str()); //JSON verisi dogrulama if (d.IsObject()) { //sayi adli veri varmi if (d.HasMember("sayi")) { //Deger olustur (referansi performans acisindan kullandik) Value& s = d["sayi"]; //sayi verisinin degeri gercekten sayimi oldugunu dogrulama if (s.IsInt()) { //sayiya + 1 eklettirdik s.SetInt(s.GetInt() + 1); // Stringify StringBuffer buffer; Writer<StringBuffer> writer(buffer); d.Accept(writer); // (GetString) stringbufferi stringe cevirme icin cout << buffer.GetString() << endl; } } } } int main() { cout << "stringtenJSON fonksiyonu:" << endl; stringtenJSON(); cout << endl; cout << "JSONokuma fonksiyonu:" << endl; JSONokuma(); system("pause"); return 0; }
Compile ettiğimizde sonuç şu şekilde gözükecektir:
Kolay gelsin…
0 yorum