从基元 avro 模式创建对象



>假设我在 avro 中有一个这样的模式

{ "type" : "string" }

我应该如何在 java 中从此模式创建对象?

我没有找到直接使用 java avro lib 的方法

但你仍然可以这样做

public static byte[] jsonToAvro(String json, Schema schema) throws IOException {
DatumReader<Object> reader = new GenericDatumReader<>(schema);
GenericDatumWriter<Object> writer = new GenericDatumWriter<>(schema);
ByteArrayOutputStream output = new ByteArrayOutputStream();
Decoder decoder = DecoderFactory.get().jsonDecoder(schema, json);
Encoder encoder = EncoderFactory.get().binaryEncoder(output, null);
Object datum = reader.read(null, decoder);
writer.write(datum, encoder);
encoder.flush();
return output.toByteArray();
}
Schema PRIMITIVE = new Schema.Parser().parse("{ "type" : "string" }");
byte[] b = jsonToAvro(""" + mystring + """, PRIMITIVE);

从 如何 avro 二进制将我的 JSON 字符串编码为字节数组?

最新更新