dflemstr / rq

Record Query - A tool for doing record analysis and transformation

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Where do I find the Visitor to use when deserializing data?

xrl opened this issue · comments

I have loaded the schema and I have some data to parse but when it comes time to deserialize I have to provide a visitor. Where do I find this? Here's a copy of my code:

use serde::Deserializer;
use serde_avro::de::Deserializer as AvroDeserializer;
use serde_avro::de::read::Direct;

[[ SNIP ]]

    let schema_json : serde_json::value::Value = serde_json::from_str(&idb_stream.value_schema[..]).unwrap();
    let mut registry = serde_avro::schema::SchemaRegistry::new();
    registry.add_json(&schema_json).unwrap();
    let schema = registry.schema_by_name("vnoportal.ut").unwrap();

[[ SNIP ]]

                let payload = m.payload().unwrap();
                let payload_len = payload.len();

                let mut payload_cursor = std::io::Cursor::new(payload);
                let direct_reader = Direct::new(payload_cursor, payload_len);
                let mut deserde = AvroDeserializer::new(direct_reader,&registry,&schema);

                use std::collections::BTreeMap;
                let val : Result<serde_value::Value, serde_avro::error::Error> = deserde.deserialize();

The error is on the last line, I must provide a visitor for deserde's deserialize.

rq now uses avro-rs.

Yes, the repo no longer contains any avro support, please turn to use a different library!