You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@avro.apache.org by "Doug Cutting (JIRA)" <ji...@apache.org> on 2009/06/18 00:12:07 UTC
[jira] Commented: (AVRO-50) bidrectional text representation of
AVRO data
[ https://issues.apache.org/jira/browse/AVRO-50?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12720938#action_12720938 ]
Doug Cutting commented on AVRO-50:
----------------------------------
If we have the schema in hand, then we can use the same JSON representations that are used for default values (http://hadoop.apache.org/avro/docs/current/spec.html#Records), with the exception of unions.
Unions will need to be labeled. For example, a union with a map and a record would be ambiguous, since both are represented as JSON objects, and unions of bytes and bytes, enums and or strings would also be ambiguous.
For unions we can use a two-element JSON array whose first element is the name of the type in the union and whose second element is the JSON-encoded value. For example, given the schema "[string|bytes]", the value ["string","foo"] would be a string, while ["bytes","foo"] would be bytes. If a value is not a JSON array then it is assumed to be of the first element of the union. So, with the above schema, the value "foo" alone would be a string. Note however that if a union includes an array, then JSON values must always use the array form. Thoughts?
> bidrectional text representation of AVRO data
> ---------------------------------------------
>
> Key: AVRO-50
> URL: https://issues.apache.org/jira/browse/AVRO-50
> Project: Avro
> Issue Type: New Feature
> Components: spec
> Reporter: Philip Zeyliger
>
> It would be very useful to add a text representation of AVRO data to the spec, and implement toString() and fromString() in all implementations. Faced with binary data, it'll be a useful operation to decode it for debugging, ad-hoc manipulation, etc.
> I suspect the text format will:
> * be JSON
> * require the schema for full interpretation
> * map easily onto the binary format (if the binary format has a signifier to take a specific branch of a union, the text format will have such a signifier as well)
> * not be unique (there's more than one way to encode a given number (e.g., {{0x0 == 0}}) or string (e.g., {{"\u0061" == "a"}}, not to mention flexible whitespace)
> * be compatible, for the binary type, with whatever is decided in AVRO-36
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.