我正在使用 Avro C++ 库。我有一个使用“解码”函数和字节流作为源获得的二进制对象。我需要将其转换为 json 字符串,对象架构可用。有没有办法做到这一点?我找不到例子。
这样解决:
ObjectType 对象;
std::unique_ptravro::InputStream ObjectInputStream = avro::memoryInputStream((uint8_t *)PointerToBinaryData, BinaryDataSize);
avro::DecoderPtr 解码器 = avro::binaryDecoder();
解码器->init(*ObjectInputStream);
avro::decode(*解码器,对象);
std::ifstream SchemaFile(“/path_to_the_schema/schema_file.avsc”);
avro::ValidSchema 架构;
avro::compileJsonSchema(SchemaFile, Schema);
std::unique_ptravro::OutputStream JsonOutputFile = avro::fileOutputStream("path_to_json_file/json_file.json");
avro::EncoderPtr JsonEncoder = avro::jsonPrettyEncoder(Schema);
JsonEncoder->init(*JsonOutputFile);
avro::encode(*JsonEncoder, 对象);
JsonEncoder->flush();