我正在尝试将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字符串的建议。谢谢!

最佳答案

如果它是this JsonEncoder,则没有任何公共构造函数。它说“使用EncoderFactory构造”。但是,EncoderFactory确实具有jsonEncoder工厂方法,该方法采用SchemaOutputStream

我只是尝试了一下,创建JsonEncoder的方法是:

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

09-05 09:44