项目作者: ukabuer

项目描述 :
serialize and deserialize C++ data structure, no RTTI, support JSON, msgpack.
高级语言: C++
项目地址: git://github.com/ukabuer/seria.git
创建时间: 2020-02-15T15:04:34Z
项目社区:https://github.com/ukabuer/seria

开源协议:

下载


seria

Serialize/deserialize C++ data structure to/from JSON, no RTTI.

Support

  • boolean, integer, float/double, enum, std::string/C string, std::array/std::vector/C array, and struct/class
  • nested data structure
  • customize label for object member
  • default value during deserialize
  • customize rule for enum/object

Usage:

  1. struct Inside {
  2. float value = 1.0f;
  3. std::vector<int> arr = {1, 2, 3};
  4. };
  5. struct Test {
  6. int value = 233;
  7. Inside inside;
  8. };
  9. // register your object
  10. namespace seria {
  11. template <> auto register_object<Test>() {
  12. return std::make_tuple(member("value", &Test::value, 666), // default value
  13. member("inside", &Test::inside)); // nested object
  14. }
  15. template <> auto register_object<Inside>() {
  16. return std::make_tuple(member("a_value", &Inside::value), // customize label
  17. member("arr", &Inside::arr)); // array
  18. }
  19. } // namespace seria
  20. Test obj {};
  21. auto str = seria::to_string(obj);
  22. // {"value":233,"inside":{"a_value":1.0,"arr":[1,2,3]}}
  23. auto json = seria::serialize(obj);
  24. Test data {};
  25. seria::deserialize(data, json);