【发布时间】:2019-10-14 07:18:18
【问题描述】:
我有一个 Avro 二进制格式的字符串。我想将字符串转换为 json。有人可以指导我吗?我尝试使用在线提供的解决方案它不起作用。
public String avroToJson(byte[] avro) throws IOException {
boolean pretty = false;
GenericDatumReader<GenericRecord> reader = null;
JsonEncoder encoder = null;
ByteArrayOutputStream output = null;
try {
reader = new GenericDatumReader<GenericRecord>();
InputStream input = new ByteArrayInputStream(avro);
DataFileStream<GenericRecord> streamReader = new DataFileStream<GenericRecord>(input, reader);
output = new ByteArrayOutputStream();
Schema schema = streamReader.getSchema();
DatumWriter<GenericRecord> writer = new GenericDatumWriter<GenericRecord>(schema);
encoder = EncoderFactory.get().jsonEncoder(schema, output, pretty);
for (GenericRecord datum : streamReader) {
writer.write(datum, encoder);
}
encoder.flush();
output.flush();
return new String(output.toByteArray());
} finally {
try {
if (output != null) output.close();
} catch (Exception e) {
}
}
}
我正在使用 getBytes() 将我的字符串转换为字节数组并将其传递给此函数。我得到了这个例外。 线程“主”org.apache.avro.InvalidAvroMagicException 中的异常:不是 Avro 数据文件。
【问题讨论】: