[ 
https://issues.apache.org/jira/browse/AVRO-924?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14599225#comment-14599225
 ] 

Dean Ericson commented on AVRO-924:
-----------------------------------

This doesn't seem to work when using a more typical json example.  Here is the 
json I used that seems to be still broken.

{code}
String json = "{\"cost\": 0, \"stamp\": {\"hour\": 12, \"second\": 0}}";
{code}

Here is my test

{code}
        public static String jsonToAvro(String json, Schema schema)
                        throws IOException {
                ByteArrayOutputStream baos = new ByteArrayOutputStream();
                PrintStream out = new PrintStream(new 
BufferedOutputStream(baos));
                GenericDatumReader<Object> reader = new 
GenericDatumReader<Object>(schema);
                InputStream input = new 
ByteArrayInputStream(json.getBytes("utf-8"));
                JsonDecoder jsonDecoder = 
DecoderFactory.get().jsonDecoder(schema,input);
                GenericDatumWriter<Object> writer = new 
GenericDatumWriter<Object>(schema);
                Encoder e = EncoderFactory.get().binaryEncoder(out, null);
                Object datum = null;
                while (true) {
                        try {
                                datum = reader.read(datum, jsonDecoder);
                        } catch (EOFException eofException) {
                                break;
                        }
                        writer.write(datum, e);
                        e.flush();
                }
                return baos.toString("utf-8");
        }
{code}

I notice that the existing tests use the following:
{code}
 private static final String JSON = 
    "\"Long string implies readable length encoding.\"\n";
{code}
I would recommend updating the tests and use more 'complex' json examples

> permit reading & writing arbitrary JSON as binary Avro data
> -----------------------------------------------------------
>
>                 Key: AVRO-924
>                 URL: https://issues.apache.org/jira/browse/AVRO-924
>             Project: Avro
>          Issue Type: New Feature
>          Components: java
>            Reporter: Doug Cutting
>            Assignee: Doug Cutting
>             Fix For: 1.6.0
>
>         Attachments: AVRO-924.patch
>
>
> It would be useful to permit reading and writing arbitrary JSON data as 
> binary Avro data.  JSON is a popular data interchange format but can be 
> rather big and slow to process in some cases, e.g., for numeric data.  Avro 
> can provide a smaller and faster to process binary format for JSON data.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to