Naming a::b usually implies "a does b", e.g. std::vector::push_back means "vector pushes back". By definition, parser never writes, it only reads data so this method should be named json::parser::read/consume/etc.
json::serializer::read has the same problem, obj.read(data, size) means object reads data of given size, serializer::read actually writes some data into the given buffer. Don't know if there are other components with this problem.
Naming
a::busually implies "a does b", e.g.std::vector::push_backmeans "vector pushes back". By definition, parser never writes, it only reads data so this method should be namedjson::parser::read/consume/etc.json::serializer::readhas the same problem,obj.read(data, size)means object reads data of given size,serializer::readactually writes some data into the given buffer. Don't know if there are other components with this problem.