相关疑难解决方法(0)

如何在覆盖时间戳字段从毫秒到日期时间的同时将Avro GenericRecord转换为有效的Json?

如何在将时间戳字段从毫秒转换为日期时间的同时将Avro GenericRecord转换为Json?

当前使用Avro 1.8.2

    Timestamp tsp = new Timestamp(1530228588182l);
    Schema schema  = SchemaBuilder.builder()
            .record("hello")
            .fields()
            .name("tsp").type(LogicalTypes.timestampMillis().addToSchema(Schema.create(Schema.Type.LONG))).noDefault()
            .endRecord();
    System.out.println(schema.toString());

    GenericRecord genericRecord = new GenericData.Record(schema);
    genericRecord.put("tsp",tsp.getTime()); //Assume I cannot change this
    System.out.println(genericRecord.toString());
Run Code Online (Sandbox Code Playgroud)

我尝试使用下面的函数,但结果与 genericrecord.toString()

public static String toJsonString(Schema schema, GenericRecord genericRecord) throws IOException {
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    GenericDatumWriter<GenericRecord> writer = new GenericDatumWriter<>(schema);
    writer.getData().addLogicalTypeConversion(new TimeConversions.TimestampConversion());
    JsonEncoder encoder = EncoderFactory.get().jsonEncoder(schema, baos, false);
    writer.write(genericRecord, encoder);
    encoder.flush();
    return baos.toString();
}
Run Code Online (Sandbox Code Playgroud)

第三次尝试

public static GenericRecord deserialize(final Schema schema, byte[] data) throws IOException {
        final GenericData …
Run Code Online (Sandbox Code Playgroud)

avro

1
推荐指数
1
解决办法
1978
查看次数

标签 统计

avro ×1