Hey Check,
I asked a very similar question a few days ago and Dave McAlpin (
[email protected]) was able to help with. He sent out a couple
general-purpose serialization and deserialization functions for JSON to
String and back to JSON, but this can be adapted to JSON->byte[]->JSON
easily:
Here are some utility functions we've used for serialization to and from
JSON. Something similar should work for binary.
public <T> String avroEncodeAsJson(Class<T> clazz, Object object) {
String avroEncodedJson = null;
try {
if (object == null || !(object instanceof SpecificRecord)) {
return null;
}
T record = (T) object;
Schema schema = ((SpecificRecord) record).getSchema();
ByteArrayOutputStream out = new ByteArrayOutputStream();
Encoder e = EncoderFactory.get().jsonEncoder(schema, out);
SpecificDatumWriter<T> w = new SpecificDatumWriter<T>(clazz);
w.write(record, e);
e.flush();
avroEncodedJson = new String(out.toByteArray());
} catch (IOException e) {
e.printStackTrace();
}
return avroEncodedJson;
}
public <T> T jsonDecodeToAvro(String inputString, Class<T> className,
Schema schema) {
T returnObject = null;
try {
JsonDecoder jsonDecoder = DecoderFactory.get().jsonDecoder(schema,
inputString);
SpecificDatumReader<T> reader = new
SpecificDatumReader<T>(className);
returnObject = reader.read(null, jsonDecoder);
} catch (IOException e) {
e.printStackTrace();
}
return returnObject;
}
Hope that helps,
Gary
On Mon, Feb 24, 2014 at 9:54 AM, Check Peck <[email protected]> wrote:
>
> On Mon, Feb 24, 2014 at 7:43 AM, Adrian Hains <[email protected]> wrote:
>
>> org.apache.avro.tool.DataFileWriteTool
>>
>
>
> I just read it and the description says "Reads new-line delimited JSON
> records and writers an Avro data file."
>
> And I need to Avro Binary Encode my JSON String into ByteArray and I guess
> they both are different correct?
>