By passing json_reader/writer that implement our bytereader/writer interfaces all of the serialization code is embedded in the streamers (reader/writer) and any io stream is supportable. The only other change would be passage of element names to the generic reader/writer methods.