A universal serialization engine for C++ using compile-time reflection to convert objects to/from JSON, XML, YAML, and Protobuf.
Iguana is a universal serialization engine for C++ that uses compile-time reflection to convert C++ objects to and from various data formats like JSON, XML, YAML, and Protobuf. It solves the problem of data interchange in C++ applications by providing a single, efficient library for multiple serialization needs without runtime overhead.
C++ developers working on applications that require serialization for data storage, network communication, or configuration files, especially those using modern C++17/C++20 features.
Developers choose Iguana for its compile-time reflection approach, which ensures high performance and type safety, combined with support for multiple formats through a simple and consistent API, reducing the need for multiple serialization libraries.
universal serialization engine
Uses compile-time reflection to avoid runtime overhead, ensuring high performance and type safety, as highlighted in the README's emphasis on no runtime costs.
Provides consistent functions like to_json/from_json for JSON, XML, YAML, and Protobuf, simplifying code across different serialization needs without switching libraries.
Works on Linux, macOS, and Windows with GCC, Clang, and MSVC compilers, demonstrated by the CI badges in the README showing active testing.
Supports nested objects, containers (e.g., vectors, maps), enums, and optional types out of the box, as shown in the complicated examples with structs like composit_t.
Explicitly stated in the FAQ that raw pointers are not supported, which limits compatibility with legacy C++ codebases that rely on them.
Not yet thread-safe, requiring manual locking before calls like from_json or to_json, which adds complexity for concurrent applications.
Requires C++17 or C++20 compilers, excluding projects on older standards, and pre-C++20 needs extra YLT_REFL macro boilerplate.
Protocol Buffers - Google's data interchange format
FlatBuffers: Memory Efficient Serialization Library
Cap'n Proto serialization/RPC system - core tools and C++ library
Protocol Buffers with small code size
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.