# Avro转换器

将数据编码/解码为Avro数据序列化格式，支持schema

> 标准页面: https://elysiatools.com/zh/tools/avro-converter

- **分类:** Format Conversion

- **关键词:** avro, 编码, 解码, 转换, 二进制, 序列化, schema, avro转换器

## 概述

Avro转换器是一个用于在JSON数据与Avro二进制序列化格式之间进行编码和解码的在线工具。它支持可选的Avro Schema以确保数据结构正确，并允许用户选择十六进制或Base64作为输出格式，便于数据传输、存储和调试。

## 输入项

- **输入数据** (textarea): Enter JSON data to encode or Avro data to decode...
- **操作** (select)
- **输出格式** (select)
- **Avro Schema（可选）** (textarea): Enter Avro schema JSON (optional)...

## 适用场景

- 需要将JSON数据编码为紧凑的Avro二进制格式，以便在网络上传输或存储到支持Avro的系统（如Kafka、Hadoop）中。
- 需要将接收到的Avro二进制数据解码为可读的JSON格式，以便查看、分析或调试数据内容。
- 需要验证JSON数据是否符合预定义的Avro Schema结构，确保数据在序列化前的正确性。

## 工作原理

- 在“输入数据”文本框中，粘贴或输入您要处理的JSON数据（用于编码）或Avro二进制数据（用于解码）。
- 从“操作”下拉菜单中选择“Encode to Avro”（编码）或“Decode from Avro”（解码）。
- （可选）在“Avro Schema”文本框中提供一个有效的Avro Schema JSON。对于编码，Schema用于指导序列化；对于解码，Schema用于验证和解析数据。
- 从“输出格式”下拉菜单中选择编码结果的表示形式：十六进制（Hexadecimal）或Base64。解码操作的结果始终为JSON文本。

## 使用案例

- 数据序列化与传输：在微服务或数据管道中，将JSON配置或消息编码为Avro二进制，以减少网络带宽占用并提高序列化/反序列化效率。
- 数据存储与归档：将JSON格式的日志或事件数据编码为Avro格式后存入数据湖或数据库，利用Avro的Schema演化特性进行长期数据管理。
- 数据验证与调试：在开发过程中，将收到的Avro数据解码为JSON，快速检查数据内容是否正确，或验证数据是否符合预期的Schema定义。

## 常见问题

### 使用这个工具必须提供Avro Schema吗？

不是必须的。Schema是可选的。对于编码，没有Schema时工具会尝试推断结构；对于解码，没有Schema时工具会尝试解析，但提供Schema能确保更准确的解析和验证。

### 支持哪些输出格式？

编码操作的输出支持十六进制（Hexadecimal）和Base64两种格式。解码操作的输出固定为JSON格式。

### 这个工具能处理大型数据文件吗？

本工具设计用于处理粘贴到文本框中的数据。对于非常大的数据集，建议使用专门的命令行工具或编程库以获得更好的性能和内存管理。

### 编码和解码有什么区别？

编码是将结构化的JSON数据转换为Avro定义的紧凑二进制格式。解码是将Avro二进制数据还原为人类可读的JSON格式。

### 支持嵌套的复杂数据结构吗？

支持。只要输入的JSON数据符合Avro规范，并且（如果提供）与提供的Avro Schema兼容，工具就能处理包括记录、数组、映射等在内的嵌套复杂结构。

## 相关工具

- [CBOR转换器](https://elysiatools.com/zh/tools/cbor-converter): 将数据编码/解码为CBOR（简洁二进制对象表示）格式
- [Ion转换器](https://elysiatools.com/zh/tools/ion-converter): 将数据编码/解码为Ion（Amazon Ion）二进制格式
- [MessagePack转换器](https://elysiatools.com/zh/tools/msgpack-converter): 将数据编码/解码为MessagePack二进制序列化格式
- [Protobuf转换器](https://elysiatools.com/zh/tools/protobuf-converter): 将数据编码/解码为Protocol Buffers (Protobuf) 二进制格式
- [ASCII85转换器](https://elysiatools.com/zh/tools/ascii85-converter): 将文本编码/解码为ASCII85格式（Adobe版本）
- [Base32转换器](https://elysiatools.com/zh/tools/base32-converter): 将文本编码/解码为Base32格式，支持多种变体
- [Base45转换器](https://elysiatools.com/zh/tools/base45-converter): 将文本编码/解码为Base45格式（RFC 9285）
- [Base58转换器](https://elysiatools.com/zh/tools/base58-converter): 将文本编码/解码为Base58格式，支持比特币和瑞波币变体

## 示例

- [Web Python 图像处理示例](https://elysiatools.com/zh/samples/web-image-processing-python): Web Python 图像处理示例，使用 PIL/Pillow 包括读取、保存、缩放和格式转换
- [Android Java 图像处理示例](https://elysiatools.com/zh/samples/android-image-processing-java): Android Java 图像处理示例，包括图像读取保存、缩放和格式转换
- [Android Kotlin 图像处理示例](https://elysiatools.com/zh/samples/android-image-processing-kotlin): Android Kotlin 图像处理示例，包括图像读取保存、缩放和格式转换
- [Web Rust 图像处理示例](https://elysiatools.com/zh/samples/web-image-processing-rust): Web Rust 图像处理示例，包括图像读取保存、缩放和格式转换

## 相关内容

- [二进制载荷编码、序列化与往返验证](https://elysiatools.com/zh/hubs/binary-payload-serialization): 在二进制序列化格式、文本传输编码与转义表示之间转换结构化数据，并通过往返比对确认字段、类型和字节没有被意外改变。
