2014-04-09 24 views
12

Apache Avro, seri hale getirme için kompakt, hızlı, ikili veri formatı ve zengin veri yapısı sağlar. Ancak, kullanıcının seri hale getirilmesi gereken nesne için bir şemayı (JSON) tanımlamasını gerektirir.Belirli Java Nesnesinden Avro Şeması Oluşturun

Bazı durumlarda, bu mümkün olamaz (ör., Bu Java nesnesinin sınıfı, dış kütüphanelerde dış java sınıfı olan bazı üyelere sahiptir). Bu yüzden, bir aracın nesnenin .class dosyasından bilgi alması ve bu nesne için Avro şemasını oluşturması (örneğin, belirli nesneyi JSON dizgisine dönüştürmek için .class bilgisi gibi) olduğunu merak ediyorum.

+0

İlginç bir soru. Java sınıflarından (jsonschema2pojo) JSON Schemas üretebilen bir araç var ve JSON Schemas'dan (json-schema-avro) Avro şemasını oluşturabilen bir aracım var. Ancak, eski araç sadece JSON Schema v3'ü üretebilir ve benim aracım JSON Schema v4'ü giriş olarak atar ... – fge

+0

Cevabınız için teşekkür ederiz, JSON şemasından Avro Schema'yı dönüştürebilecek bir araç yazdığınız anlamına mı geliyor? –

+1

Evet, demek istediğim: https://github.com/fge/json-schema-avro – fge

cevap

0

İşte nasıl Generate an Avro Schema from POJO definition

ObjectMapper mapper = new ObjectMapper(new AvroFactory()); 
AvroSchemaGenerator gen = new AvroSchemaGenerator(); 
mapper.acceptJsonFormatVisitor(RootType.class, gen); 
AvroSchema schemaWrapper = gen.getGeneratedSchema(); 
org.apache.avro.Schema avroSchema = schemaWrapper.getAvroSchema(); 
String asJson = avroSchema.toString(true);