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
