Soldaki editöre C++ yapıştırın ve "Dönüştür"’e tıklayın — biz JSON’a çeviririzC++ kodunu yapıştırın

Bu araç ne işe yarıyor

Bir C++ struct’ıyla aynı şekli taşıyan bir JSON payload’a ihtiyacınız oldu mu hiç — bir API’ye yedirmek, bir fixture ya da bir config dosyası hazırlamak için — akışı bilirsiniz: nlohmann::json’u projeye katmak, to_json tutkalm yazmak, yeniden build. Buraya C++ yapıştırın, bunların hiçbiri olmadan geçerli JSON alın. Tek bir initializer olsun, içinde birkaç struct bulunan koca bir header dosyası olsun, iç içe template’lerle dolu bir şey olsun — sonuç aynı: her alanı korunmuş, temiz bir JSON belgesi.

Dönüştürücü, C++ değerlerinin gerçekte nasıl serileştirildiğini bilir. std::string JSON string’e, 49.99f veya 42u gibi sayısal literaller suffix’siz JSON sayısına, bool true/false’a, std::vector<T> / std::array<T,N> ise JSON dizisine döner. std::nullopt içeren bir std::optional<T>, null’a düşer; değeri varsa içerideki tip serileştirilir. String anahtarlı std::map ve std::unordered_map, cppreference’ın geleneğine uygun şekilde JSON nesnesine dönüşür.

C++20’nin designated initializer’ları (.field = value) ve aggregate initializer list’ler de desteklenir. Birkaç struct’ı aynı anda yapıştırırsanız, her biri JSON’da üst düzey bir giriş olarak çıkar ve iç içe tipler açılır. Boost.JSON dünyasından geliyorsanız, çıktı boost::json::value_from’dan bekleyeceğinizin aynısıdır — template akrobasisi olmadan.

Nasıl kullanılır

Üç adım. Tek bir initializer list yapıştırsanız da, bir düzine struct içeren koca bir header atsanız da aynı şekilde çalışır.

1

C++’ınızı yapıştırın (ya da örneği yükleyin)

C++’ınızı olduğu gibi soldaki editöre bırakın. Bir struct tanımı, bir class, bir initializer list, birden çok tip veya iç içe yapılar — hepsi uyar. Önce gerçekçi bir örneği görmek için Örnek Yükle’ye tıklayın.

#include direktiflerini, namespace’leri veya template’leri söküp atmanıza gerek yok. C++ söz dizimini olduğu gibi bırakın — parser halleder. Standart belgesine bakmak isterseniz ISO C++ resmi materyalleri tutar.

2

Dönüştür’e basın

Yeşil Dönüştür butonuna tıklayın. Araç C++’ı okur, her struct’ı ve alanı korur ve JSON’u tek seferçe çıkarır. İşlem sırasında kısa bir yükleme göstergesi görünür.

3

JSON’u kopyalayın

Sağdaki panel girintili JSON ile dolar. REST çağrınıza, test fixture’ınıza, CMakeLists’ın yanındaki config dosyasına veya dokümantasyona yapıştırın. Döngü tamamlanmıştır.

Gerçekten işe yaradığı yerler

API istek payload’ları

Bir C++ request struct’ınız var ve curl veya Postman’a atmak için JSON’a ihtiyacınız var. Struct’ı yapıştırın, JSON’u alın, yolunuza devam edin.

Config dosyası şablonları

40 üyeli bir Settings struct’ı, düzenlemeye hazır bir JSON şablonuna dönüşür — elle yazılmış iskele yok, unutulmuş anahtar yok.

Kodla uyumlu kalan dokümantasyon

README veya API referansı için JSON örneklerini doğrudan gerçek struct’larınızdan üretin; dokümantasyon gerçeklikten kopmayı bırakır.

Test fixture’ları ve seed’ler

Unit testlerinizdeki initializer list’leri entegrasyon testleri, mock sunucular veya veritabanı yükleyicileri için JSON seed dosyalarına çevirin.

Sık sorulan sorular

nlohmann::json veya Boost kurulu olmak zorunda mı?

Hayır. Araç sunucu tarafında çalışır ve kodunuzu çalıştırmaz — herhangi bir serileştirme kütüphanesi katmadan JSON alırsınız. Yine de runtime’da bir kütüphane istiyorsanız, nlohmann/json ve Boost.JSON ikisi de sağlam seçenekler.

std::optional, std::variant ve smart pointer’ları destekliyor mu?

std::nullopt içeren bir std::optional<T>, null’a döner; değeri varsa içerideki tip serileştirilir. std::unique_ptr ve std::shared_ptr da aynı şekilde ele alınır — boşsa null, değilse gösterilen değer. std::variant o an aktif olan alternatifi kullanır.

std::vector ve std::map gibi container’lar ne olacak?

std::vector, std::array, std::list, std::set ve std::deque hepsi JSON dizisine dönüşür. String anahtarlı std::map / std::unordered_map JSON nesnesine döner; string olmayan anahtarlar cppreference container semantiğine göre string’e çevrilir.

Aynı anda birden çok struct yapıştırabilir miyim?

Evet — koca bir header ya da .cpp dosyası yapıştırın. Her üst düzey aggregate JSON’da kendi anahtarıyla çıkar ve iç içe tipler açılır. Taban sınıflardan miras alınan üyeler de dahil edilir.

Kodum saklanıyor mu?

Kodunuz dönüştürme için backend’e gönderilir ve kalıcı olarak tutulmaz — payload’u loglamayız. Yine de her zamanki gibi, kod gerçekten hassassa yapıştırmadan önce bir göz gezdirmek iyi olur.

Kodda template, macro veya lambda varsa ne olur?

Somut tiplerle instantiate edilmiş template’ler sorunsuz çalışır. Instantiate edilmemiş template’ler, macro’lar ve lambda’lar tüm dönüşümü batmak yerine null olarak çıkar, böylece verilerinizin geri kalanı yine de geçer. Bariz syntax hatalarını önce düzeltin — parser müşfik, ama tam bir derleyici değil.

İşinize yarayabilecek diğer araçlar

C++’tan JSON’a yalnızca bulmacanın bir parçası. Bunlar iyi eşleşir: