A C++ reflection library for automatic serialization/deserialization of JSON, YAML, and binary formats.
Easy Reflection is a C++ library that provides runtime reflection capabilities, enabling automatic serialization and deserialization of C++ objects to formats like JSON, YAML, and binary. It parses source code for special attributes, generates reflection metadata, and allows operations like copying, printing, and method invocation without manual type handling.
C++ developers working on applications that require object serialization/deserialization, debugging tools, or runtime type introspection, particularly those needing cross-platform support and performance.
It eliminates boilerplate code for serialization, offers faster JSON and YAML processing compared to popular libraries, and supports a wide range of C++ features like STL containers and smart pointers out of the box.
Reflection and serialization library. Supports json, yaml, and binary. Uses libClang AST for code generation.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Benchmarks in the README show faster JSON serialization than nlohmann/json and significantly faster YAML processing compared to yaml-cpp, with built-in support for multiple formats.
Automatically handles std::vector, std::map, and other standard containers, plus smart pointers, eliminating manual serialization code for common data structures.
Works on Linux, macOS, Windows, x86, and ARM architectures, as stated in the features, ensuring versatility across development environments.
Supports converting enums to strings and vice versa, and enables runtime method invocation through reflection, adding dynamic capabilities to C++.
The library is explicitly described as a proof-of-concept, which may lead to instability, breaking changes, or limited long-term support and testing.
Requires a code generation step that parses source files with special attributes, adding setup complexity and potential compilation overhead.
The README admits deserialization can be more than twice slower without simdjson, and it always constructs full objects, which may be inefficient for large data.