简体   繁体   English

将具有Avro字段的对象转换为json

[英]Convert object with Avro fields to json

I have the following code to convert an object to Json: 我有以下代码将对象转换为Json:

public static Function<Object, Object> WRITE_JSON = (Object val) -> {
    try {
        return new ObjectMapper().writeValueAsString(val);
    } catch (IOException e) {
        // log exception
        return "";
    }         
}

This works fine for most cases, but fe I have an Avro class named AvroData , and a class that saves it: 在大多数情况下,这都可以正常工作,但是如果我有一个名为AvroData的Avro类和一个保存它的类:

class SomeData {
    private AvroData avroData;
    // more fields, getter/setter boilerplate, etc...
}

When I try to serialise the object to Json , this fails when trying to serialize the Avro field. 当我尝试将对象序列化为Json时,尝试序列化Avro字段时失败。 In reality, I have a bit more data, like Set s and Map s that contain Avro record values, but I think the point stands. 实际上,我还有更多数据,例如包含Avro记录值的SetMap ,但是我认为这很重要。

How do you manage to serialise a avro to json, but specifically when it's part of a Non-avro object? 您如何管理将avro序列化为json,特别是当它是Non-avro对象的一部分时?

To convert your Object val in JSON with Jackson: 要使用Jackson转换JSON中的Object val

ObjectWriter ow = new ObjectMapper().writer().withDefaultPrettyPrinter();
String json = ow.writeValueAsString(val);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM