Java如何将GenericRecord转换为json字符串?

时间:2018-06-29 01:25:50

标签: java json avro

我正在尝试将GenericRecord转换为json字符串,以便将其传递给类似JSONObject的对象。我正在考虑使用JsonEncoder来做到这一点。现在我有类似的东西:

ByteArrayOutputStream out = new ByteArrayOutputStream();
JsonEncoder jsonEncoder = new JsonEncoder(genericRecord.getSchema(),out);

但是它给我一个错误:

error: incompatible types: ByteArrayOutputStream cannot be converted to JsonGenerator

根据JsonEncoder的源代码,它应该具有一个接受输出流的构造,因此我不确定为什么会出现此错误。 有人可以建议如何解决该问题吗?也欢迎任何其他有关如何将GenericRecord转换为json字符串的建议。谢谢!

1 个答案:

答案 0 :(得分:1)

如果为this JsonEncoder,则没有任何公共构造函数。它说“使用EncoderFactory进行构造”。 EncoderFactory确实有一个jsonEncoder工厂方法,该方法需要一个Schema和一个OutputStream

我刚刚尝试过,创建JsonEncoder的方法是:

JsonEncoder jsonEncoder = EncoderFactory.get().jsonEncoder(genericRecord.getSchema(), out);