我需要从这个库反向移植一些Java 8代码: https://github.com/allegro/json-avro-converter
对于使用Java 8更有经验的人可以确认以下用于将JSON编码字节数组转换为Avro的代码是否实际上是相同的,并且我没有错过一个愚蠢的边缘案例?
使用lambdas:
private GenericData.Record readRecord(Map<String,Object> json, Schema schema, Deque<String> path) {
GenericRecordBuilder record = new GenericRecordBuilder(schema);
json.entrySet().forEach(entry ->
ofNullable(schema.getField(entry.getKey()))
.ifPresent(field -> record.set(field, read(field, field.schema(), entry.getValue(), path, false))));
return record.build();
}
我对JDK7的修改:
private GenericData.Record readRecord(Map<String,Object> json, Schema schema, Deque<String> path) {
GenericRecordBuilder record = new GenericRecordBuilder(schema);
for (Map.Entry<String, Object> entry : json.entrySet()) {
Schema.Field field = schema.getField(entry.getKey());
if (field != null) {
record.set(field, read(field, field.schema(), entry.getValue(), path, false));
}
else {
// Do nothing
}
}
return record.build();
}