Konwerter JSON na C++ — Generator struktur
Konwertuj JSON na struktury lub klasy C++ online z from_json i to_json z nlohmann/json, polami std::optional i przestrzeniami nazw. Za darmo, szybko i prywatnie.
🔒 Działa całkowicie w Twojej przeglądarce — nic nie jest przesyłaneGeneruj typy C++ z JSON
C++ nie ma wbudowanej refleksji, więc mapowanie JSON na własne typy zwykle oznacza napisanie struktury, a następnie pary funkcji serializacji dla każdego obiektu w danych. Ten konwerter JSON na C++ generuje jedno i drugie na podstawie przykładu. Każdy obiekt JSON staje się strukturą struct (lub klasą z getterami i setterami), klucze stają się składowymi w snake_case, obiekty zagnieżdżone stają się osobnymi typami, tablice zamieniają się w std::vector<T>, liczby całkowite w int64_t, liczby ułamkowe w double, a pola brakujące lub równe null w części przykładu — w std::optional<T>. Całość jest umieszczana w wybranej przestrzeni nazw i zapisywana jako jeden nagłówek zabezpieczony przez #pragma once.
Wnioskowaniem typów zajmuje się quicktype, który przed wyborem typu łączy wszystkie elementy każdej tablicy. Pole występujące tylko w niektórych elementach i tak jest rozpoznawane jako opcjonalne, więc parsowanie pełnej odpowiedzi nie zgłasza błędu z powodu brakującego klucza.
Integracja z nlohmann/json
Wygenerowany nagłówek jest przeznaczony dla nlohmann/json, najpopularniejszej biblioteki JSON dla nowoczesnego C++. Dla każdego typu definiuje przeciążenia from_json i to_json, które odwzorowują składowe na oryginalne klucze JSON, oraz niewielkie funkcje pomocnicze dla wartości opcjonalnych. Gdy json.hpp jest dostępny, odczytanie dokumentu to jedno wywołanie nlohmann::json::parse(text).get<Root>(), a zapisanie go z powrotem to nlohmann::json j = value;. Zaznacz Types only, jeśli potrzebujesz samych deklaracji — na przykład do użycia z innym serializatorem — oraz Use Boost, jeśli Twój toolchain nie obsługuje C++17.
Wskazówki dla kodu produkcyjnego
Wklej kompletny przykład z kilkoma elementami tablic i wypełnionymi polami opcjonalnymi, aby typy były dokładne. Puste tablice i wartości null zamieniają się w nlohmann::json, co zwykle warto zastąpić. Zmień nazwę typu głównego tak, by pasowała do Twojej domeny, ustaw przestrzeń nazw odpowiednią dla projektu i uruchom clang-format na wyniku. Sprawdź szerokość liczb całkowitych, rozważ enum class dla ciągów o stałym zbiorze wartości i pamiętaj, że ciągi daty i czasu pozostają typu std::string, dzięki czemu możesz je parsować wybraną biblioteką. Całe przetwarzanie odbywa się lokalnie, więc wewnętrzne dane zostają na Twoim komputerze.
Jak używać
- Wklej JSONWklej dokument JSON lub kliknij Load sample.
- SkonfigurujUstaw nazwę typu głównego, przestrzeń nazw, styl struktury lub klasy oraz obsługę pól opcjonalnych.
- Dodaj nagłówekSkopiuj kod lub pobierz plik .hpp i dołącz go obok json.hpp.
Najczęściej zadawane pytania
Z jakiej biblioteki JSON korzysta wygenerowany kod?
from_json i to_json, więc nlohmann::json::parse(text).get<Root>() działa od razu.Jakiego standardu C++ wymaga?
std::optional. Zaznacz Use Boost, aby zamiast tego użyć boost::optional, jeśli jesteś ograniczony starszym standardem.