Hi folks,

I am trying to add a convenience method for my team that can serialize an
Avro record in the C++ bindings to JSON with a few minor customizations.
For example, our schema encodes UUIDs as Fixed types, and they are the only
fields which are a Fixed type with the particular length of a UUID.  We'd
like to encode those UUIDs in the JSON output according to the RFC 4122
specified UUID format instead of a unicode escape sequence for ease of
debugging.

Since we only have a few minor changes, I initially thought it would make
sense to use inheritence for this, but looking at the JsonGenerator and
JsonEncoder classes that currently exist, this seems like it could be
challenging.  Continuing with the UUID example, the specific method I'd
want to override (escapeCtl at
https://github.com/apache/avro/blob/master/lang/c++/impl/json/JsonIO.hh#L214)
and the StreamWriter for building the JSON string are both private to the
JsonGenerator class.

Is there an easy way to achieve what I describe in the example above in the
C++ bindings that I am missing or overlooking?  If not, is there any reason
why those methods should not be changed from private visibility to
protected so I could accomplish this through inheritence?

Thanks,
-- 

Tim Upthegrove

Reply via email to