我想使用Apache Avro来序列化我的数据,我的客户端是用C++编写的,而我的服务器是用Java编写的.
我的服务器java代码如下所示:
Schema scm = new Schema.Parser().parse("....shcema String.....");
ByteArrayInputStream inputStream = new ByteArrayInputStream(record.array());
Decoder coder = new DecoderFactory().directBinaryDecoder(inputStream, null);
GenericDatumReader<GenericRecord> reDatumReader = new GenericDatumReader<GenericRecord>(scm);
try {
GenericRecord result = (GenericRecord)reDatumReader.read(null, coder);
//here! the result "name", "num_groups" is empty!
System.out.println(result.get("name")+" "+result.get("num_groups"));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)我的客户代码:
std::string schemaDescript ="....shcema String.....";
std::stringstream rsStream(schemaDescript);
avro::ValidSchema rSchema;
avro::compileJsonSchema(rsStream, rSchema);
avro::EncoderPtr encoder = avro::binaryEncoder();
std::auto_ptr<avro::OutputStream> oStream = avro::memoryOutputStream();
encoder->init(*oStream);
avro::GenericDatum rData(rSchema);
avro::GenericRecord sReord = rData.value<avro::GenericRecord>();
sReord.setFieldAt(0, …Run Code Online (Sandbox Code Playgroud)