logo
GeekFormat

JSON'dan C++'ya

Ücretsiz çevrimiçi JSON'dan C++'ya aracı. JSON yapıştırarak doğrudan derlenebilen C++ struct/class header kodu otomatik olarak üretin, nlohmann/json veya rapidjson ile API yanıtlarını deserializasyon için uygundur, iç içe nesneler otomatik olarak bağımsız sınıflara ayrılır, std::vector ve std::optional otomatik olarak işlenir, tamamen tarayıcıda yerel olarak çalışır.

İlgili Öneriler

JSON'dan C++'ya Hakkında: JSON Verilerini Derlenebilir C++ Struct'larına Dönüştürme

JSON'dan C++'ya, JSON biçimindeki verileri (nesneler veya diziler) C++ struct/class tür tanımlarına dönüştürme işlemidir. C++, arka uç hizmetleri, oyun motorları, gömülü firmware, nicel ticaret, yüksek performanslı hizmetler ve masaüstü istemciler gibi senaryolarda yaygın olarak kullanılan güçlü türlü bir sistem programlama dilidir. Geliştirme sırasında sık sık API belgelerindeki veya gerçek yanıtlardaki örnek JSON'u C++ türlerine dönüştürmek gerekir, struct'ları elle yazmak yalnızca fazla tekrarlayan iş yapmakla kalmaz, aynı zamanda alan türlerini yanlış yazma olasılığı da yüksektir, bu aracın amacı bu süreci otomatikleştirmektir. C++, Java, Python, JavaScript'ten farklı olarak JSON gibi dinamik yapılar için yerel desteğe sahip değildir, bu nedenle 'JSON'dan C++'ya' mühendislik dünyasında uzun zamandır 'tekrarlayan ama atlanamayan' bir iş olarak görülmüştür.

Bu araç, tarayıcıda yerel olarak quicktype-core tabanında çalışır, C++ için std::string/std::vector<T>/std::optional<T> tabanlı struct kodu üretmek üzere CPP işleyici ve just-types işleme seçeneklerini kullanır. Üretilen kod, hiçbir üçüncü taraf JSON ayrıştırma kütüphanesine bağımlı olmayan standart header-only C++ kodudur, doğrudan herhangi bir C++17/C++20 projesine #include eklenebilir. nlohmann::json veya rapidjson ayrıştırıcıları ile birlikte kullanıldığında API yanıtlarının deserializasyonu hızla tamamlanabilir. Tüm işleme süreci tarayıcıda Web Worker aracılığıyla asenkron olarak gerçekleştirilir, ana iş parçacığı akıcı ve yanıt verici kalır.

Tür çıkarımı, JSON'dan C++'ya'nın çekirdeğidir. Araç, JSON'un temel türlerini C++ standart türlerine eşler: dizeleri std::string ile, tamsayıları int64_t ile (long long ile uyumlu, platformlar arası long boyut farklılıklarını önler), kayan noktalı sayıları double ile, boolean değerleri bool ile, dizileri std::vector<T> ile, iç içe nesneleri bağımsız struct/class ile, null değerleri std::optional<T> ile eşler. İç içe nesneler için araç, her seviye için otomatik olarak yeni bir sınıf oluşturur ve PascalCase ile adlandırır, örneğin address alanı Address struct'ı üretir, items dizisindeki nesneler Item struct'ı üretir. Aynı JSON iç içe seviyesi yalnızca bir kez üretilir, tekrarlayan tanımlar yapılmaz.

JSON'u işlemek için sunucuya yüklemeyi gerektiren bazı çevrimiçi araçların aksine, bu aracın tüm hesaplamaları tarayıcıda yapılır. quicktype-core, Web Worker aracılığıyla yüklenir ve yürütülür, JSON ayrıştırma, tür çıkarımı, C++ kod üretme ve dosya indirme işlemlerinin tümü yerel olarak yapılır, hiçbir veri sunucuya gönderilmez. Bu, API anahtarları, kullanıcı gizlilik alanları veya yayınlanmamış iş yapıları içeren JSON için özellikle önemlidir, sayfa kapatıldıktan sonra veriler bellekten temizlenir. Şirket ağ ortamı, iç denetim gereksinimleri veya çevrimdışı geliştirme senaryoları ne olursa olsun, bu araç quicktype komut satırı aracıyla aynı güvenilirliği sağlayabilir.

Üretilen kod genellikle bir JSON ayrıştırıcı ile birlikte kullanılmalıdır. İki ana seçenek vardır: ① nlohmann::json (önerilen, tek header ekleme, şablon serileştirme arayüzü kullanıcı dostu, nlohmann::json j = nlohmann::json::parse(str); User u = j.get<User>(); benzeri yazım); ② rapidjson (finans, oyun gibi uç senaryolar için uygun, yüksek performanslı SAX/DOM tarzı ayrıştırma, GetObject ile alanları manuel olarak çıkarmayı gerektirir). Gömülü sistemler için ArduinoJson (sınırlı kaynaklar) veya cJSON (C tarzı arayüz) de kullanılabilir. Bu aracın kodu tüm ana akım C++ JSON kütüphaneleriyle uyumludur, belirli bir ekosisteme zorla bağlı değildir.

Unutulmamalıdır ki otomatik olarak üretilen kod bir başlangıç noktasıdır, bitiş noktası değildir. Araç, türleri örnek JSON'a göre çıkarır, iş dünyasındaki kesin türleri yargılayamaz (örn. URL, E-posta, kimlik gibi anlamsal türlerin tümü tek tip olarak std::string olarak çıkarılır). snake_case JSON alanları için C++ struct alanları orijinal halleriyle üretilir, eşleşme ilişkilerini bildirmek için manuel olarak NLOHMANN_DEFINE_TYPE_INTRUSIVE veya NLOHMANN_JSON_FROM/NLOHMANN_JSON_TO eklemeniz gerekebilir. Üretilen sonucu bir taslak olarak ele almanız ve proje özelliklerine göre alan adlarını, türleri ve serileştirme notlarını ayarlamanız önerilir. Bu 'Yapay zeka taslak yazar + mühendis inceler' iş akışı aynı zamanda çok sayıda C++ ekibinin gerçek temposudur.

Ekipler arası işbirliği senaryolarında JSON'dan C++'ya, veri modellerini birleştirmenin de köprüsüdür. Ön uç JSON'dan TypeScript'e, arka uç JSON'dan Java/Go/Rust'a, gömülü ve performans hizmetleri JSON'dan C++'ya kullanır, dört taraf aynı örnek JSON'dan kendi tür tanımlarını üretir, bu da alan tutarlılığını en üst düzeye çıkarır. Bu araç bu iş akışındaki 'C++ tarafıdır', sitedeki diğer JSON'dan TypeScript/Java/Rust/Go/Python araçlarıyla aynı anda kullanılabilir.

Tek cümleyle özetlemek gerekirse: Kodunuz performansa duyarlı, güçlü türlü, zengin ekosisteme sahip C++ projelerinde çalışıyorsa ve JSON gibi dinamik verileri hızla güçlü türlü dünyaya bağlamanız gerekiyorsa, bu araç örnek JSON'u C++ struct'larına derlemek için doğrudan bir giriş noktasıdır.

Kullanım senaryoları

  • REST API entegrasyonu: Arka uçtan dönen JSON yanıtlarını C++ struct'larına dönüştürün, güçlü türlü HTTP istek deserializasyonu için nlohmann::json/cpr ile kullanın
  • Mikro hizmet arayüz tanımı: gRPC/HTTP hizmetlerinin istek gövdesi örnek JSON'unu C++ türlerine dönüştürün, sunucu tarafı model tanımlarını birleştirin
  • Gömülü sistemler ve IoT: Cihazların raporladığı JSON sensör verilerini C++ struct'larına dönüştürün, MQTT/HTTP mesajlarını ayrıştırmak için ArduinoJson veya ESP-IDF JSON Parser ile kullanın
  • Oyun geliştirme: Seviye yapılandırması, karakter özellikleri JSON'unu C++ struct'larına dönüştürün, Unreal Engine veya Cocos2d-x gibi motorların .json veri dosyalarını okumasını kolaylaştırın
  • Finansal yüksek frekanslı ticaret: Borsa JSON arayüz yanıtlarını (OKX/Binance/Xueqiu piyasa verileri gibi) C++ struct'larına dönüştürün, nanosaniye düzeyinde ayrıştırma için rapidjson ile kullanın
  • C++ Qt istemcileri: Sunucu JSON yapılandırmasını C++ struct'larına dönüştürün, GUI veri yükleme için QJsonObject/QJsonDocument ile kullanın
  • Boost.JSON/Boost.Beast: HTTP hizmetlerinin JSON yanıtlarını C++ struct'larına dönüştürün, deserializasyon için Boost.JSON ile kullanın, Web arka uçları yazın
  • Gömülü RTOS: FreeRTOS/Zephyr sistem yapılandırması JSON'unu C++ struct'larına dönüştürün, firmware parametrelerini okumak için cJSON ile kullanın
  • Algoritma/nicel ticaret: Backtest sistemlerinin JSON yapılandırmasını C++ struct'larına dönüştürün, A/B deney yapılandırma yönetimi ve sürüm geri izlemeyi kolaylaştırın
  • Veritabanı migrasyonu: MongoDB/PostgreSQL'den dışa aktarılan JSON belgelerini C++ modellerine dönüştürün, cpp-httplib/libpqxx varlık alanları için referans olarak kullanın
  • Ses/video/multimedya: FFmpeg/GStreamer yapılandırması JSON'unu C++ struct'larına dönüştürün, medya hattı parametrelerinin okunmasını kolaylaştırın
  • Simülasyon ve modelleme: Simülasyon sistemlerinin JSON girdi yapılandırmasını C++ struct'larına dönüştürün, farklı alt modellerin girdi veri biçimlerini birleştirin
  • Test verisi oluşturma: Arka uçtan dönen gerçek JSON fixture'larını C++ türlerine dönüştürün, Google Test/Catch2 birim testlerinde yapısal iddialar yapın
  • Yapısal günlük ayrıştırması: ELK/Loki tarafından yakalanan JSON günlüklerini C++ türlerine dönüştürün, filtreleme ve uyarı kuralları oluşturmayı kolaylaştırın
  • Yapılandırma merkezi migrasyonu: Apollo/Nacos/Consul JSON yapılandırmasını C++ türlerine dönüştürün, sunucu tarafı yapılandırma sıcak yüklemesi için kullanın
  • Diller arası işbirliği: Arka uç C++ ile ön uç TypeScript/Java entegrasyonu, aynı JSON'u sırasıyla C++ struct ve TS interface/Java POJO'ya dönüştürerek iki tarafın tutarlılığını koruyun
  • Öğretim ve eğitim: C++ kurslarında örnek JSON'u struct'lara dönüştürün, nlohmann::json deserializasyon sürecini ve şablon metaprogramlama kavramlarını gösterin
  • Alan adı dönüşümü: snake_case JSON API yanıtlarını C++ struct'larına dönüştürdükten sonra, alan eşleşmesi için manuel olarak NLOHMANN_DEFINE_TYPE_INTRUSIVE ekleyin

Nasıl Kullanılır

  1. Sol düzenleyiciye JSON içeriğini yapıştırın (JSON nesnesi önerilir) veya .json/.txt dosyası seçmek için yükle düğmesine tıklayın
  2. Araç, Web Worker aracılığıyla quicktype-core kullanarak 400ms içinde otomatik olarak dönüşüm yapar, sağ tarafta std::string/std::vector<T>/iç içe sınıflara sahip C++ header kodu görüntülenir
  3. JSON biçimi hatalıysa kırmızı bir mesaj görüntülenir, yaygın sorunları (sondaki virgüller, tek tırnaklar vb.) otomatik olarak düzeltmek için 'JSON'u Düzelt' düğmesine tıklayın ve tekrar deneyin
  4. Üretilen struct/sınıf adlarının, alan türlerinin beklentilerinize uygun olup olmadığını kontrol edin; ayarlama gerekiyorsa kaynak JSON'un anahtar adlarını değiştirin ve yeniden dönüştürün
  5. Kodu IDE'nizin .h/.hpp dosyasına yapıştırmak için 'Kopyala'ya tıklayın, gerçek API yanıtlarını deserializasyon için nlohmann::json veya rapidjson ile kullanın; veya model.h/model.hpp olarak kaydetmek için 'İndir'e tıklayın

Özellikler

  • Yerel tarayıcı dönüşümü: JSON ayrıştırma ve C++ kod üretimi tamamen tarayıcıda Web Worker + quicktype-core aracılığıyla yapılır, ham veriler hiçbir sunucuya yüklenmez
  • nlohmann::json tarzı çıktı: std::string/std::vector<T>/double/int64_t/bool gibi STL tür struct'ları otomatik olarak üretir, nlohmann::json deserializasyon alışkanlıklarına uygundur, doğrudan <nlohmann/json.hpp> ekleyerek ayrıştırma yapabilirsiniz
  • rapidjson uyumluluğu: Üretilen saf C++ struct'ları hiçbir üçüncü taraf kütüphaneye bağımlı değildir, yüksek performanslı ayrıştırma senaryolarında rapidjson Document/GenericValue ile kullanılabilir
  • Otomatik tür çıkarımı: JSON dizeleri std::string ile, tamsayılar int64_t/long long ile, kayan noktalı sayılar double ile, boolean değerler bool ile, diziler std::vector<T> ile, iç içe nesneler bağımsız class/struct ile eşleşir
  • İç içe nesnelerin otomatik ayrılması: İç içe JSON otomatik olarak bağımsız class/struct üretir (PascalCase adlandırma), aynı türün tekrarlayan tanımlarını önler
  • std::vector ve std::optional otomatik işleme: JSON dizileri std::vector<T>'ye dönüştürülür, null olabilecek alanlar std::optional<T> ile güvence altına alınır, modern C++17/C++20 uygulamalarına uygundur
  • 400ms debounce ile otomatik dönüşüm: JSON yapıştırdıktan sonra dönüşüm otomatik olarak tetiklenir, sağ tarafta C++ header kodu gerçek zamanlı olarak önizlenir, bekleme ve gereksiz tıklamaları azaltır
  • JSON hatalarını tek tıklamayla düzeltme: Sondaki virgüller, tek tırnaklar, eksik tırnaklar gibi yaygın biçim hatalarını otomatik olarak düzeltir, düzeltme başarılı olduktan sonra kod üretmeye devam eder
  • Kod vurgulama + tek tıklamayla kopyalama: Sağdaki CodeMirror alanı C++ sözdizimi vurgulaması yapar, tüm header dosyasını tek tıklamayla kopyalayabilir veya doğrudan projeye koymak için .h/.hpp dosyası olarak indirebilirsiniz
  • localStorage giriş geçmişi + duyarlı bölünmüş sütunlar: Son girişleri otomatik olarak kaydeder, sayfayı yeniledikten veya yanlışlıkla kapattıktan sonra hızla kurtarabilirsiniz; sol tarafa JSON yapıştırın, sağ tarafta C++ kodunu görüntüleyin, panel genişliğini sürükleyerek ayarlamayı destekler, büyük ekranlara ve mobil cihazlara uyarlanmıştır
  • Bağımlılıksız header-only ürün: Üretilen .h/.hpp header-only biçimindedir, tek dosya ile herhangi bir standart C++ projesine eklenebilir, ek yapılandırma yapmadan nlohmann::json/rapidjson/Boost.JSON ile kullanılabilir
  • Yerleşik snake_case'den camelCase'e dönüşüm: JSON'daki snake_case alanlarını otomatik olarak C++ için önerilen camelCase alan adlarına dönüştürebilir, NLOHMANN_DEFINE_TYPE_INTRUSIVE ile snake_case serileştirme eşleşmesini korur

Kod Örnekleri

C++: Bu araç tarafından üretilen struct'ı nlohmann/json ile deserializasyon etme

cpp

Üretilen User struct'ını .hpp dosyasına koyun, modern C++17/20 projeleri için önerilen şekilde nlohmann::json ile deserializasyon yapın.

// model.hpp (bu araç tarafından üretilmiştir)
// #pragma once
// #include <cstdint>
// #include <optional>
// #include <string>
// #include <vector>
// struct Address {
//   std::string city;
//   std::string zip;
// };
// struct User {
//   int64_t id;
//   std::string name;
//   std::optional<Address> address;
//   std::vector<std::string> tags;
// };

#include <nlohmann/json.hpp>
#include "model.hpp"

using nlohmann::json;

int main() {
    std::string raw = R"({
        "id": 1,
        "name": "Alice",
        "address": { "city": "Beijing", "zip": "100000" },
        "tags": ["cpp", "nlohmann"]
    })";

    // 1) JSON dizesini ayrıştır
    json j = json::parse(raw);

    // 2) Bu araç tarafından üretilen struct'a güçlü türlü deserializasyon
    User u = j.get<User>();

    // 3) Alanlara eriş
    std::cout << u.name << " lives in "
              << (u.address ? u.address->city : "unknown")
              << std::endl;

    for (const auto& tag : u.tags) {
        std::cout << "tag: " << tag << std::endl;
    }
    return 0;
}

/*
 * Derleme (CMake projesi):
 *   find_package(nlohmann_json REQUIRED)
 *   target_link_libraries(my_app PRIVATE nlohmann_json::nlohmann_json)
 * Derleme (vcpkg):
 *   vcpkg install nlohmann-json
 * Tek dosya entegrasyonu:
 *   https://github.com/nlohmann/json/releases adresinden json.hpp dosyasını doğrudan indirin
 */

C++: Bu araç tarafından üretilen struct'a JSON'u rapidjson ile ayrıştırma

cpp

rapidjson özel struct'lara otomatik deserializasyonu desteklemez, GetObject ile manuel olarak alan çıkarmayı gerektirir. Finans/oyun gibi yüksek performanslı senaryolar için uygundur.

#include "rapidjson/document.h"
#include "rapidjson/stringbuffer.h"
#include <iostream>
#include "model.hpp"

int main() {
    const char* raw = R"({
        "id": 1,
        "name": "Alice",
        "address": { "city": "Beijing", "zip": "100000" },
        "tags": ["cpp", "rapidjson"]
    })";

    // 1) rapidjson DOM ayrıştırması
    rapidjson::Document doc;
    doc.Parse(raw);

    // 2) Bu araç tarafından üretilen struct'ı oluştur ve manuel olarak doldur
    User u;
    u.id = doc["id"].GetInt64();
    u.name = doc["name"].GetString();

    if (doc.HasMember("address") && doc["address"].IsObject()) {
        Address addr;
        addr.city = doc["address"]["city"].GetString();
        addr.zip  = doc["address"]["zip"].GetString();
        u.address = addr;
    }

    for (auto& tag : doc["tags"].GetArray()) {
        u.tags.push_back(tag.GetString());
    }

    // 3) Doldurulmuş struct'ı kullan
    std::cout << u.name << ", tags=" << u.tags.size() << std::endl;
    return 0;
}

/*
 * rapidjson yüksek performans ipuçları:
 *   ① rapidjson::MemoryPoolAllocator ve StringBuffer ile birlikte kullanmak daha da hızlandırabilir;
 *   ② Yüksek frekanslı senaryolarda doğrudan akışlı işleme için SAX tarzı Reader/Writer kullanılabilir;
 *   ③ RAPIDJSON_SSE42/RAPIDJSON_SIMD makrolarını etkinleştirmek CPU SIMD komutlarını kullanarak hızlandırmayı sağlar.
 */

C++: NLOHMANN_DEFINE_TYPE_INTRUSIVE ile snake_case alan eşleşmelerini işleme

cpp

JSON alanları snake_case biçimindeyken ve C++ üyelerinin camelCase/PascalCase kullanmasını istediğinizde, nlohmann/json makrolarıyla eşleşmeyi bildirin.

#include <nlohmann/json.hpp>
#include <string>
#include <cstdint>

// Aracın snake_case alanlar ürettiğini varsayalım: user_name, created_at
// Gerçek projede camelCase olarak yeniden adlandırırken aşağıdaki makroları ekleyin
struct UserProfile {
    int64_t id;
    std::string userName;       // JSON'da "user_name"
    std::string emailAddress;   // JSON'da "email_address"
    std::string createdAt;      // JSON'da "created_at"
};

// Sınıf içinde eşleşmeyi bildirmek için NLOHMANN_DEFINE_TYPE_INTRUSIVE kullanın
// Not: public alana yerleştirilmelidir
// 
// NLOHMANN_DEFINE_TYPE_INTRUSIVE(UserProfile, id, userName, emailAddress, createdAt)

// Veya istilacı olmayan makroyu kullanın (sınıfın kendisini değiştirmeyi önler):
NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE(UserProfile, id, userName, emailAddress, createdAt)

// Kullanımı:
int main() {
    nlohmann::json j = {
        {"id", 1},
        {"user_name", "Alice"},
        {"email_address", "a****@***********"},
        {"created_at", "2026-07-14T10:00:00.000Z"}
    };

    UserProfile p = j.get<UserProfile>();
    // Serileştirme sırasında da orijinal alan adlarıyla çıktı verir
    std::cout << j.dump(2) << std::endl;
    return 0;
}

/*
 * İpuçları:
 *   ① İstilacı makro (NLOHMANN_DEFINE_TYPE_INTRUSIVE) public alana yerleştirilmelidir;
 *   ② İstilacı olmayan makro (NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE) sınıf dışında tanımlanır;
 *   ③ Alan sırası makro parametreleriyle kesinlikle aynı olmalıdır;
 *   ④ Tarih alanları ISO 8601 biçimini işlemek için nlohmann::json özel adl_serializer ile işlenebilir.
 */

Best Practices

Çoğu ekip önce nlohmann::json kullanmanızı önerir, çünkü API'si STL'ye benzer, deserializasyon sırasında j.get<User>() tek satırda yeterlidir, okunabilirlik çok yüksektir. Yalnızca performans darboğazıyla karşılaştığınızda (saniyede milyonlarca JSON alanı çıkarma gibi) rapidjson'a geçin. Bu araç tarafından üretilen struct'lar ikisiyle de çalışabilir.

nlohmann/json deposurapidjson deposu

include(FetchContent) + FetchContent_Declare(nlohmann_json URL ...) kullanmak CMaker'da nlohmann/json entegrasyonunun en temiz yoludur, vcpkg önceden yüklemeyi gerektirmez; FetchContent yapılandırmak istemiyorsanız vcpkg install nlohmann-json kullanabilir veya doğrudan json.hpp tek dosyasını indirip ekleyebilirsiniz.

CMake FetchContent Resmi Belgeleri

Araç varsayılan olarak JSON orijinal alan adlarını korur (snake_case). C++ üyelerinin camelCase veya PascalCase olmasını istiyorsanız, JSON anahtarlarını C++ üyeleriyle açıkça eşlemek için sınıf içinde NLOHMANN_DEFINE_TYPE_INTRUSIVE(UserProfile, id, userName, ...) eklemelisiniz, aksi takdirde deserializasyon başarısız olur.

NLOHMANN_DEFINE_TYPE_INTRUSIVE Belgeleri

C++17+ doğrudan std::optional<T> kullanır; C++11/14 projeleri boost::optional<T> ile değiştirir (#include <boost/optional.hpp>); C tarzı projeler null'ı temsil etmek için cJSON + sentinel alanlar (-1, boş dize) kullanır. std::optional ile boost::optional'ın arayüzünün biraz farklı olduğunu unutmayın (has_value() vs is_initialized()).

cppreference std::optional

Arduino Uno/ESP8266 gibi RAM'i çok küçük cihazlarda std::vector ve std::string genellikle OOM'a neden olur. Bunun yerine ArduinoJson 6.x + StaticJsonDocument<kapasite> kullanarak arabelleği sınırlayın, std::vector<T>'yi sabit boyutlu std::array<T, N> ile, std::string'i const char* + uzunluk ile değiştirin.

ArduinoJson Belgeleri

Bu aracın tüm ayrıştırma, kod üretme ve dosya indirme işlemleri tarayıcıda Web Worker aracılığıyla yerel olarak yapılır, orijinal JSON hiçbir sunucuya yüklenmez. Ancak yine de önerilir: ① İç iş modellerini önce hassasiyetten arındırın (token/telefon numarası vb. kaldırın); ② Sayfayı kapatmak belleği temizler; ③ Büyük şirket uyumluluk senaryolarında müşteri bilgileri içeren JSON'u IDE'de yerel quicktype komut satırıyla işlemeniz önerilir.

6 seviyeden fazla iç içe geçmiş JSON'un kaynak tarafta yeniden yapılandırılması veya bu araç tarafından üretildikten sonra okunabilirliği ve derleme hızını artırmak için derin iç içe yapıları ara struct'lara manuel olarak bölmeniz önerilir. Derin iç içe yerleşim şablon örnekleme derinliğinin çok derin olmasına neden olur, bazı eski derleyiciler (GCC 6 altı) 'şablon örnekleme derinliği aşıldı' hatası verir.

Bu araç tarafından üretilen kod özünde C++'dır (std::optional/şablonlar gibi C++ özelliklerini kullanır), C header'ı olan .h'den ayırt etmek için 'C++ header' anlamına gelen .hpp uzantısını kullanmanız önerilir. CMake projelerinde: set_target_properties(target PROPERTIES CXX_EXTENSIONS ON); CMake ayrıca .h vs .hpp'ye göre gcc ile mi g++ ile mi derleyeceğini otomatik olarak tanıyabilir, header-only şablonların yeniden örneklenmeme sorununu en üst düzeye çıkarabilir.

GCC Dosya Uzantısı ÖzellikleriCMake Dosya Türü Tanıma

Sık Sorulan Sorular

JSON'u C++ struct'ına/sınıf tanımına nasıl dönüştürebilirim?

Sol düzenleyiciye JSON içeriğini yapıştırın (ayrıca sürükle bırak veya .json/.txt dosyası yüklemek için tıklamayı da destekler), araç 400ms içinde tarayıcıda quicktype-core'u otomatik olarak çağırarak C++ header kodu üretir; sağdaki CodeMirror alanında std::string/std::vector<T>/iç içe sınıflara sahip struct kodu görüntülenir. JSON biçimi hatalıysa, otomatik olarak düzeltmek için 'JSON'u Düzelt' düğmesine tıklayın, ardından dönüştürün.

Üretilen C++ kodu için hangi header dosyaları gereklidir?

Araç yalnızca C++ standart kütüphanesine (<string>, <vector>, <optional>, <cstdint>) bağımlı header-only struct kodu üretir. nlohmann/json ile ayrıştırma yaparken ek olarak #include <nlohmann/json.hpp> gerekir; rapidjson ile ayrıştırma yaparken #include "rapidjson/document.h" gerekir. Diğer standart header dosyaları araç tarafından gerektiğinde bildirilir.

Hangi JSON veri yapıları destekleniyor?

Tüm yasal JSON yapıları desteklenir: temel türler (null, boolean, number, string), diziler (tek veya çok boyutlu), iç içe nesneler (herhangi bir derinlik). JSON nesneleri kök struct/class üretir, JSON dizileri üst struct'ın bir alanında std::vector<T> olarak görünür. JavaScript nesne sabitleri, fonksiyonlar, Symbol, undefined ve diğer JSON olmayan değerler desteklenmez.

JSON alan türleri C++ türlerine nasıl eşleşir?

Dizeler std::string ile eşleşir; tamsayılar int64_t ile (eski kodla uyumluluk için genellikle long long da kullanılır); kayan noktalı sayılar double ile; boolean değerler bool ile; diziler std::vector<T> ile; iç içe nesneler bağımsız struct/class ile; null değerler std::optional<T> ile (nlohmann::json ile güvence altına alınabilir). Ayrıntılı eşleşme kuralları için sayfanın altındaki 'JSON Türlerinden C++ Türlerine Hızlı Eşleşme Tablosu'na bakabilirsiniz.

null değerleri için hangi tür üretilir?

JSON'daki null değerler std::optional<T> üretir (C++17'den itibaren kullanılabilir), bu alanın eksik olabileceğini veya türünün belirsiz olabileceğini belirtir. Alanın gerçek türünü zaten biliyorsanız, kaynak JSON'da örnek bir değer verebilirsiniz (örn. "field": "" std::string olarak çıkarılır), ürettikten sonra iş gereksinimlerine göre std::optional<std::string> gibi daha kesin bir türe değiştirebilirsiniz.

Diziler otomatik olarak std::vector'a dönüştürülür mü?

Evet. JSON dizileri tek tip olarak C++ std::vector<T> şablon kapsayıcısına dönüştürülür, öğe türü dizinin ilk öğesine göre otomatik olarak çıkarılır. Örneğin ["a","b"] std::vector<std::string> üretir, [1,2,3] std::vector<int64_t> üretir, [{...},{...}] std::vector<Item> üretir (Item, iç içe nesneden üretilen bağımsız struct'tır).

İç içe nesneler nasıl işlenir?

Her iç içe nesne bağımsız bir struct/class üretir, adlandırma kuralı alan adının PascalCase halidir (örn. address alanı Address struct'ı üretir, items dizisindeki nesneler Item struct'ı üretir). Kök struct'ta iç içe sınıfa std::optional<Address> veya Address türünde bir üye ile başvurulur. Aynı yapıdaki nesneler aynı türü yeniden kullanır, tekrarlayan tanımları önler.

Üretilen kod nlohmann/json ile deserializasyon için kullanılabilir mi?

Evet. Tipik kullanım örneği: nlohmann::json j; j["root"] = nlohmann::json::parse(raw_json); User u = j.get<User>(); Ön koşul, projenin nlohmann/json tek header bağımlılığını eklemiş olması (doğrudan <nlohmann/json.hpp> ekleyerek) ve bu araç tarafından üretilen User struct'ını tanımlamış olmasıdır.

Üretilen kod rapidjson ile deserializasyon için kullanılabilir mi?

Evet. rapidjson, GetObject türünde alan çıkarma kodunu manuel olarak yazmanızı gerektirir. Tipik yol: rapidjson::Document doc; doc.Parse(raw_json); const auto& obj = doc["root"]; std::string id = obj["id"].GetString(); rapidjson şablonlar aracılığıyla otomatik deserializasyonu desteklemediğinden, üretilen struct yalnızca veri modeli referansı olarak hizmet eder.

snake_case JSON alanları nasıl işlenir?

Araç, C++ alanlarını üretirken JSON orijinal alan adlarını korur (örn. user_name), C++ üyelerinin camelCase (userName) veya PascalCase (UserName) kullanmasını istiyorsanız, ürettikten sonra manuel olarak değiştirebilir ve eşleşmeyi belirtmek için NLOHMANN_DEFINE_TYPE_INTRUSIVE/NLOHMANN_JSON_FROM/NLOHMANN_JSON_TO gibi JSNOMacros ekleyebilirsiniz.

Üretilen header dosyası doğrudan Qt/Unreal/Boost projelerine konulabilir mi?

Evet. Bu araç tarafından üretilen kod belirli bir framework'e bağımlı olmayan standart header-only C++ kodudur. Qt QJsonObject ile ayrıştırma yaparken struct'ı veri modeli olarak kullanın (üyeleri Q_GADGET ile işaretleyin); Unreal Engine ile kullanırken FJsonObjectConverter::JsonObjectStringToUStruct ile birlikte kullanın; Boost.JSON ile kullanırken JSON'u boost::json::object olarak ayrıştırdıktan sonra alanları tek tek çıkarın.

Veriler sunucuya yükleniyor mu? Gizlilik açısından güvenli mi?

Tamamen yerel tarayıcıda çalışır. Tüm JSON ayrıştırma, C++ kod üretme ve dosya indirme işlemleri tarayıcıda JavaScript (Web Worker + quicktype-core) aracılığıyla yapılır, girilen JSON verileri ve üretilen C++ kodu hiçbir sunucuya yüklenmez, bulutta kaydedilmez veya önbelleğe alınmaz. API anahtarları, token'lar, yayınlanmamış iş alanları içeren hassas JSON'lar güvenle kullanılabilir, sayfa kapatıldığında veriler temizlenir.

Kayıt veya giriş yapmak gerekiyor mu?

Hayır. Araç tamamen ücretsizdir, kayıt, giriş veya yetkilendirme gerektirmez. Sayfayı açın ve kullanın, tüm işlevler tarayıcıda yerel olarak kullanılabilir, herhangi bir çağrı sayısı veya dosya boyutu sınırı yoktur (tarayıcı belleği ile sınırlıdır).

JSON biçimi hatası olursa ne yapmalıyım?

Araç JSON geçerliliğini otomatik olarak kontrol eder, hata durumunda sağ tarafta kırmızı hata mesajı görüntüler ve 'JSON'u Düzelt' düğmesi sunar. Tıkladıktan sonra yaygın hataları otomatik olarak düzeltebilir: sondaki fazladan virgüller, tek tırnakların çift tırnakla değiştirilmesi, tırnaksız anahtarlar için tırnak eklenmesi, yorumların kaldırılması vb. Düzeltme başarılı olduktan sonra C++ kodu üretmeye devam eder.

Bu aracın JSON'dan Java'ya/JSON'dan Rust'a ile farkı nedir?

Üçü de JSON'u hedef dilin tür tanımlarına dönüştürür, ancak çıktı biçimi farklıdır: JSON'dan C++'ya header-only struct/class üretir, nlohmann/json veya rapidjson ile deserializasyon kodu yazmanızı gerektirir; JSON'dan Java'ya getter/setter içeren tam POJO sınıfları üretir, doğrudan derlenip çalıştırılabilir; JSON'dan Rust'a Serde derive içeren struct'lar üretir, doğrudan serde_json ile deserializasyon yapılabilir. Seçim, teknoloji yığınınıza bağlıdır.

Sorun Giderme

'Lütfen JSON verisi girin' mesajı veya sağ taraf boş

Soldaki giriş kutusu boş veya yalnızca boşluk karakterleri içeriyor. Geçerli JSON içeriği yapıştırdığınızdan emin olun veya .json/.txt dosyası seçmek için yükle düğmesine tıklayın, ayrıca yerleşik örneği yüklemek için örnek düğmesine tıklayabilirsiniz (iç içe address/tags alanları içerir).

JSON ayrıştırma başarısız mesajı

Yaygın nedenler: sonda fazladan virgül var, çift tırnak yerine tek tırnak kullanılmış, anahtarda tırnak yok, JavaScript yorumları içeriyor. Bazı hataları otomatik olarak düzeltmek için 'JSON'u Düzelt' düğmesine tıklayın; hala başarısız olursa önce bir JSON biçimlendirme aracıyla doğrulayın.

Derleme hatası 'std::optional bildirilmemiş'

Proje C++17 ve üstü bir standart kullanmıyor. std::optional C++17'de tanıtıldı. CMakeLists.txt dosyasında CMAKE_CXX_STANDARD'ı 17 veya daha yükseğe ayarlayın (veya set(CMAKE_CXX_STANDARD 17) kullanın); veya kaynak dosyanın en üstüne #include <optional> ekleyin ve derleyici sürümünü doğrulayın.

Derleme hatası 'int64_t bildirilmemiş'

Araç <cstdint> içindeki int64_t'yi kullanır, GCC 4.5+/Clang 3.0+/MSVC 2015+ gerektirir. Kaynak dosyanın en üstünde #include <cstdint> veya #include <stdint.h> olup olmadığını kontrol edin ve CMake C++ standart ayarının >= C++11 olduğunu doğrulayın.

nlohmann::json deserializasyonu sırasında alanlar kayboluyor

Olası nedenler: ① JSON alan adı C++ üye adıyla tam olarak eşleşmiyor (snake_case vs camelCase); ② İç içe nesne doğru işlenmemiş; ③ std::optional alanının value() erişimi istisna fırlatıyor. Çözüm: alanları açıkça eşlemek için NLOHMANN_DEFINE_TYPE_INTRUSIVE makrosunu ekleyin veya varsayılan değer sağlamak için j.value("key", default) kullanın.

rapidjson ayrıştırmasında GetString segmentasyon hatası

rapidjson varsayılan olarak alan türünü doğrulamaz. GetString yalnızca alan gerçekten var olduğunda ve dize türünde olduğunda güvenlidir. İyileştirilmiş yazım: if (doc.HasMember("name") && doc["name"].IsString()) { u.name = doc["name"].GetString(); }, var olmayan bir anahtar üzerinde doğrudan GetInt/GetString kullanmaktan kaçının.

Üretilen alan türü yeterince kesin değil (tüm tamsayılar int64_t)

Araç türleri örnek JSON'a göre çıkarır, tüm tamsayılar int64_t, tüm dizeler std::string'dir. int32_t, uint64_t, std::chrono::system_clock::time_point gibi daha kesin türlere ihtiyacınız varsa, ürettikten sonra alan türünü manuel olarak değiştirin ve seçtiğiniz JSON ayrıştırma kütüphanesinin o türün deserializasyonunu desteklediğinden emin olun.

null alan std::optional<std::string> yerine std::optional<nlohmann::json> üretti

JSON null belirli bir türü çıkaramadığı için araç güvenli bir şekilde std::optional<nlohmann::json> olarak güvence altına alır. Alanın gerçek türünü biliyorsanız, kaynak JSON'da örnek bir değer verebilir (örn. "field": "" std::string olarak çıkarılır), yeniden üretebilir ve ardından manuel olarak std::optional<std::string> olarak değiştirebilirsiniz.

snake_case JSON alanları C++ adlandırma stiliyle tutarsız

Araç, C++ alanlarını üretirken JSON orijinal alan adlarını korur (örn. user_name). C++ üyelerinin camelCase (userName) kullanmasını ve aynı zamanda snake_case JSON'u doğru şekilde deserializasyon etmesini istiyorsanız, NLOHMANN_DEFINE_TYPE_INTRUSIVE/NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE makrolarını kullanmak için codeExamples'in 3. paragrafına bakın.

İndirilen .hpp dosyası projede derleme hatası veriyor

Olası nedenler: ① CMake C++17/C++20 standardını ayarlamadı; ② <optional>/<vector> gibi header dosyaları eksik; ③ Struct adı projedeki diğer türlerle çakışıyor. Çözüm: CMakeLists.txt dosyasına set(CMAKE_CXX_STANDARD 17) ekleyin, kaynak dosyanın en üstüne uygun header dosyalarını ekleyin, çakışan struct'ı namespace ile sarın veya yeniden adlandırın.

Sözlük

struct / class
C++'da bileşik veri türlerini tanımlamak için kullanılan anahtar kelimeler. Bu araç struct üretir, örn. struct User { int64_t id; std::string name; }. C++'da struct ve class neredeyse eşdeğerdir (varsayılan erişim hakları farklıdır: struct üyeleri varsayılan olarak public, class üyeleri varsayılan olarak private), araç varsayılan olarak struct üretir. Deserializasyon senaryolarında struct kullanmak daha öz ve anlaşılırdır; özel üyeleri + erişimci yöntemleri kapsüllemek istiyorsanız manuel olarak class'a değiştirebilirsiniz.
std::string
C++ standart kütüphanesinin dize türü (sahiplik semantiği), <string> içinde tanımlıdır. Bu araç JSON dize alanlarını otomatik olarak std::string ile eşleştirir, örn. std::string name. std::string'in C dili char*/char[]'inden farklı olduğunu unutmayın: std::string belleği otomatik olarak yönetir, operatör aşırı yüklemesini destekler (+, ==, <), ancak yalnızca küçük ila orta uzunluktaki dizeleri işlerken en iyi performansı gösterir; çok uzun dizeler (1KB+ tüm günlük satırı gibi) için std::string_view veya özel bir buffer kullanılması önerilir.
std::vector<T>
C++ standart kütüphanesinin dinamik dizi kapsayıcısı (<vector>), Java'nın ArrayList'ine, Python'ın listesine, JavaScript'in Array'ine eşdeğerdir. Bu araç JSON dizi alanlarını otomatik olarak std::vector<T> ile eşleştirir, örn. std::vector<std::string> tags. Avantajları: sürekli bellek, rastgele erişim O(1), sona ekleme O(1) amortize; dezavantajları: ortaya ekleme O(n). Sabit boyutlu diziler gerektiğinde std::array<T, N> (yığında tahsis edilen) kullanılabilir.
std::optional<T>
C++17'den itibaren standart kütüphanenin isteğe bağlı değer sarma türü (<optional>), değerin var olmayabileceğini belirtir. Tipik kullanım: std::optional<std::string> nickname; if (nickname) { use(*nickname); }. Bu araç JSON'da null olabilecek alanları std::optional<T> ile eşleştirir, örn. std::optional<std::string> nickname. Projeniz C++11/14 kullanmak zorundaysa, API neredeyse aynı olan boost::optional<T> ile değiştirebilirsiniz.
int64_t / double
int64_t, <cstdint> içindeki sabit genişlikli 64-bit tamsayı türü takma adıdır, long long'a eşdeğerdir, platformlar arası 8 bayt garanti eder. double, C++'ın çift duyarlıklı kayan noktalı türüdür (IEEE 754 çift duyarlıklı/binary64, yaklaşık 15-17 anlamlı basamak). Bu araç JSON tamsayılarını tek tip olarak int64_t ile, kayan noktalı sayıları double ile eşleştirir, platformlar arası long boyut tutarsızlığından (Windows long 32 bit, Linux long 64 bittir) kaynaklanan hassasiyet sorunlarını önler. Hassas kayan noktalı sayılar (finansal hesaplamalar) gerektiğinde long double veya decimal kütüphanesi kullanılabilir.
nlohmann::json
C++ ekosistemindeki en popüler JSON kütüphanelerinden biridir, nlohmann/json olarak da bilinir, Alman Niels Lohmann tarafından yayınlanmıştır. Temel fikri, JSON veri yapılarını C++ standart kütüphane türleriyle (std::map, std::vector, std::string gibi) eşleştirmektir, deserializasyon sırasında j.get<T>() ile tek satırda yapılabilir. Bu araç tarafından üretilen kod, otomatik deserializasyon uygulamak için NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE gibi makroları kullanarak nlohmann/json ile çalışabilir. Tek header bağımlılığı, zengin belgeler, STL stiliyle uyumlu API, çoğu C++ projesi için tercih edilen seçimdir.
rapidjson
Tencent'in açık kaynaklı yüksek performanslı JSON kütüphanesi (C++), yaklaşık 5k satır kod, performansı nlohmann::json'dan yaklaşık 3-5 kat daha yüksektir. SAX (akış) ve DOM (belge nesne modeli) olmak üzere iki ayrıştırma stilini destekler, SIMD komutları (SSE42 gibi) için özel hızlandırma uygulamaları vardır. Tipik senaryolar: finansal işlem piyasa verisi iletimi, oyun motoru nesne serileştirmesi, gömülü yüksek performanslı günlükleme. Bu araç tarafından üretilen struct'lar, rapidjson Document/GenericValue deserializasyonu için hedef model olarak hizmet edebilir, ancak rapidjson şablon yansıtması olmadığından alanları GetObject/GetString ile manuel olarak çıkarmak gerekir.
Web Worker / quicktype-core
Web Worker, tarayıcının sağladığı arka plan iş parçacığı API'sidir, ana iş parçacığıyla paralel olarak çalışır, ana iş parçacığının DOM'una erişemez, yalnızca postMessage aracılığıyla iletişim kurabilir. quicktype-core, açık kaynaklı JSON → çok dilli kod üretici kütüphanesidir (GitHub: quicktype/quicktype), C++/Java/TypeScript/Rust/Go/Python/Swift gibi ondan fazla dili destekler. Bu araç, tarayıcıda yerel olarak quicktype-core tabanında C++ için header-only struct kodu üretir, ham veriler hiçbir sunucuya yüklenmez, tüm ayrıştırma, üretme ve indirme tarayıcıda yapılır. quicktype-core'u yükleyen Worker, UI ana iş parçacığını engellemeyi önler.
snake_case / camelCase / PascalCase
Üç ana alan adlandırma stili: snake_case (user_name, C/Python/DB için tercih edilir), camelCase (userName, Java/JS için tercih edilir), PascalCase (UserName, C#/Rust struct alanları için tercih edilir). Bu araç varsayılan olarak JSON orijinal alan adlarını korur (genellikle snake_case), ürettikten sonra manuel olarak ayarlayabilir ve eşleşmeyi bildirmek için NLOHMANN makroları ekleyebilirsiniz. C++ ortak alan adlandırma standardının camelCase veya snake_case önerdiğini, PascalCase'in esas olarak sınıf adları için kullanıldığını (Google C++ Stili), üyeler için önerilmediğini unutmayın; snake_case MySQL sütun adlarıyla doğal olarak uyumludur.
NLOHMANN_DEFINE_TYPE_INTRUSIVE
nlohmann/json kütüphanesi tarafından sağlanan, sınıf içinde JSON serileştirme alan eşleşmelerini bildirmek için kullanılan makro. Söz dizimi NLOHMANN_DEFINE_TYPE_INTRUSIVE(ClassName, member1, member2, ...) şeklindedir, public alana yerleştirilmelidir (makronun özel alanlara erişmesi için). Sınıf dışına yerleştirilen, sınıfın kendisini değiştirmeyi gerektirmeyen istilacı olmayan sürüm NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE'dir. Bu araç tarafından üretilen struct'lar bu tür makroları otomatik olarak eklemez, gerektiğinde JSON anahtarları ile C++ üyeleri arasındaki karşılığı bildirmek için manuel olarak ekleyin. JSON alan adları C++ üyeleriyle aynıysa, bu makroyu atlayabilir ve doğrudan j.get<T>() kullanabilirsiniz.

JSON Türlerinden C++ Türlerine Hızlı Eşleşme Tablosu

Araç, JSON değerinin türüne göre karşılık gelen C++ türünü otomatik olarak çıkarır:

JSON Değer ÖrneğiÜretilen C++ TürüNot
nullstd::optional<T>null değer türü belirsizdir, std::optional<T> ile güvence altına alınır (C++17+)
true / falseboolJSON boolean değerleri doğrudan C++ bool ile eşleşir
42int64_tJSON tamsayıları varsayılan olarak int64_t (<cstdint>) ile eşleşir, long long ile uyumludur
3.14doubleJSON kayan noktalı sayıları varsayılan olarak double (IEEE 754 çift duyarlıklı) ile eşleşir
"hello"std::stringJSON dizeleri std::string (<string>) ile eşleşir
["a","b"]std::vector<std::string>Dize dizileri std::vector<std::string> ile eşleşir
[1,2,3]std::vector<int64_t>Tamsayı dizileri std::vector<int64_t> ile eşleşir
[{...},{...}]std::vector<Item>Nesne dizileri, ilk öğeye göre karşılık gelen struct üretir, ardından std::vector ile sarılır
[]std::vector<nlohmann::json>Boş diziler öğe türünü çıkaramaz, nlohmann::json ile güvence altına alınır (ayrıca std::vector<std::string> olarak yeniden yazılabilir)
{...} iç içe nesneBağımsız struct/classİç içe nesneler bağımsız struct üretir, PascalCase adlandırma (address → Address)

Yaygın C++ JSON Ayrıştırıcı Seçim Karşılaştırma Tablosu

C++ ekosistemindeki ana akım JSON ayrıştırma kütüphanelerinin karşılaştırması, proje gereksinimlerine göre seçin:

Kütüphane AdıAPI StiliPerformansUygun Senaryolar
nlohmann::jsonŞablon / STL-benzeriOrtaWeb arka uçları, masaüstü uygulamalar, öğretim; std::vector/std::map ile en iyi uyumluluk
rapidjsonSAX / DOMÇok yüksekFinansal işlemler, oyun motorları, yüksek verimli hizmetler; SIMD hızlandırma desteği
Boost.JSONBoost.ContainerYüksekBoost ekosistemi projeleri, Web sunucuları (Beast/Asio)
cJSONC tarzı / fonksiyonelYüksekC projeleri, gömülü C++, C++ şablonları getirmek istemeyen senaryolar
ArduinoJsonC++ şablonlarıOrtaArduino, ESP32/ESP8266, gömülü MCU'lar

C++ Standart Kütüphane Türlerinin JSON ile Uyumluluk Hızlı Tablosu

Geliştiricilerin hızlıca başvurması için JSON alanlarına karşılık gelen C++ standart kütüphanesindeki temel türlere genel bakış:

JSON Anahtar KelimesiC++ Standart Kütüphanesi KarşılığıGerekli Header DosyasıC++ Standardı
stringstd::string<string>C++98
integerint64_t (<cstdint>)<cstdint>C++11
numberdouble<iostream>/<cmath>C++98
booleanbool<stdbool.h>(C)/yerleşikC++98
nullstd::optional<T><optional>C++17
arraystd::vector<T><vector>C++98
sabit dizistd::array<T, N><array>C++11
nesne/mapstd::map<std::string, T><map>C++98
hash nesnestd::unordered_map<K, T><unordered_map>C++11
string viewstd::string_view (verilere sahip değil)<string_view>C++17
byte/charstd::byte/char<cstddef>C++17/C++98

Privacy & Security

Bu JSON'dan C++'ya aracının tüm işlemleri tamamen tarayıcınızda yerel olarak gerçekleştirilir: JSON ayrıştırma, C++ struct üretme ve dosya indirme işlemlerinin tümü tarayıcı JavaScript (Web Worker + quicktype-core) aracılığıyla istemci tarafında yapılır, hiçbir JSON verisi, yüklenen dosya veya üretilen kod ağ üzerinden herhangi bir sunucuya gönderilmez. Dosya yükleme, tarayıcının yerel FileReader API'sini kullanarak doğrudan belleğe okur, herhangi bir aracı hizmetten geçmez. Çerez izleme kullanmaz, hiçbir kullanıcı girişi veya kullanım verisi toplamaz. Sayfayı kapattıktan veya yeniledikten sonra tüm giriş ve çıkış içerikleri otomatik olarak bellekten temizlenir. API anahtarları, token'lar, hassas iş verileri içeren JSON'ları işlemek için uygundur.

Authoritative References