r/cpp•
beached

DAW JSON Link v2 is release

Version two marks the culmination of some nice changes in JSON Link

  • Non-intrusive mapping of your C++ structures to JSON classes and parsing without an intermediary DOM type. Because we can specify the types, we can do extra type based checks on the input data too.

  • A new lazy parsing DOM for exploring data. This can be specified in the mappings above as a member type too. The interface, also, allows iteration over array and class types.

  • A new event based(SAX) parser

  • Constexpr

  • Helper support for mapping to types like variant's and JSON array's to C++ classes, the cookbook section of the project has lots of documentation on mapping your JSON to C++

  • Lots of documents with real working examples

The library is https://github.com/beached/daw_json_link

And there is a sample cmake project that uses it to make a config file parser, with C++ comment support https://github.com/beached/daw_json_link_config_parser

Posted Sep 21, 2020, 3:28 PM UTC

204
prince-chrismc•

It would be nice to have semver.org versioning, your version number is very different from the norm.

Very interesting library, I'll be adding it to Conan Center Index shortly =)

Hope to try it out the in the near future!

1
beachedOPdaw_json_link dev•

Is there a best practice for github/c++ projects regarding that? I have tried to keep the major.minor.patch for the most part but maybe I slipped a bit.

1
TheFlamefire•

TLDR is:

  • Increase major version for incompatible changes (e.g. removing something)
  • Increase minor version for added features (i.e. non-breaking changes)
  • Increase patch when only internal stuff changed (e.g. bugfixes)
4
prince-chrismc•

Major.minor.patch is nice, but usually it should convey about the compatibility between version.

The semantic versioning (semver.org) is an RFC is means it's an actual standard. Many C++, and OSS, use this to help consumers understand the significance of changes in new versions.

1