我正在阅读有关 Avro 的内容,并且正在尝试比较 avro 与 java 序列化系统。但不知怎的,我无法判断为什么 avro 用于数据序列化而不是 java 序列化。事实上,为什么要出现另一个系统来取代java序列化系统呢?
以下是我的理解的总结。要使用 java 序列化功能,我们必须使此类实现可序列化接口。如果您这样做并序列化对象,那么在反序列化期间,类似
e = (Employee) in.readObject();
接下来我们可以使用 getter/setter 来处理员工对象。
在 avro 中,首先是模式定义。接下来是使用 avro API 进行序列化。再次关于反序列化,有类似的事情。
接下来我们可以使用 getter/setter 来处理员工对象。
问题是我没有看到任何区别,只是使用它的 API 不同?谁能澄清我的疑问吗?
public AvroHttpRequest deSerealizeAvroHttpRequestJSON(byte[] data) {
DatumReader<AvroHttpRequest> reader
= new SpecificDatumReader<>(AvroHttpRequest.class);
Decoder decoder = null;
try {
decoder = DecoderFactory.get().jsonDecoder(
AvroHttpRequest.getClassSchema(), new String(data));
return reader.read(null, decoder);
} catch (IOException e) {
logger.error("Deserialization error:" + e.getMessage());
}}
接下来我们可以使用 getter/setter 来处理员工对象。
问题是我没有看到这两种方法之间有任何区别。两者都做同样的事情。只是 API 不同吗?谁能帮助我更好地理解这一点?
慕田峪4524236
相关分类