# avro **Repository Path**: openharmony-sig/avro ## Basic Information - **Project Name**: avro - **Description**: No description available - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 10 - **Created**: 2022-04-16 - **Last Updated**: 2025-05-07 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # avro ## 简介 > 本软件是参照开源软件[apache avro](https://github.com/apache/avro)源码适配OpenHarmony实现的数据序列化系统,支持丰富的数据结构,将其转化成便于存储或传输的二进制数据格式。它同时也是一个容器文件,用于存储持久数据。 ## 效果展示: ![动画](./screenshot/avro_zh.gif) ## 下载安装 ```` ohpm install @ohos/avro-js ```` OpenHarmony ohpm 环境配置等更多内容,请参考[如何安装 OpenHarmony ohpm 包](https://gitee.com/openharmony-tpc/docs/blob/master/OpenHarmony_har_usage.md) ## 使用说明 ### 示例代码 1. 在page页面中引入avro ``` import avro from '@ohos/avro-js' ``` 2. 使用 ``` let mapType: ESObject = avro.parse({ type: 'map', values: 'long' }) let petMap: petMapType = { key1: 12343, key2: 3445 }; let bufMap: ESObject = mapType.toBuffer(petMap); // Buffer containing 'Hi''s Avro encoding. let mapSrc: ESObject = mapType.fromBuffer(bufMap); // === 'Hi' let bufferStr = ""; for (let i = 0; i < bufMap.length; i++) { bufferStr = bufferStr + bufMap[i]; } this.mapTestResult = "MapType:{原始数据:" + JSON.stringify(petMap) + ",序列化后:" + bufferStr + ",还原数据:" + JSON.stringify(mapSrc) + "};"; console.info("----MapType--{original_data:" + JSON.stringify(petMap) + ",serialization:" + bufferStr + ",restore_data:" + JSON.stringify(mapSrc) + "}"); ``` ## 接口说明 1. `avro.parse(schema, opts)`: 解析schema并返回对应的实例。 2. `type.toBuffer(val)`: 将给定值编码为二进制缓冲区。 3. `type.fromBuffer(buf, [resolver,] [noCheck])`: 从二进制缓冲区创建新的实例。 4. `type.decode(buf, [pos,] [resolver])`: 解码二进制缓冲区(Buffer)中的数据到给定的位置和解析器。 5. `type.encode(val, buf, [pos])`: 将给定值编码为二进制缓冲区。 6. `type.fromString(str)`: 从字符串创建新的实例。 7. `type.toString([val])`: 将给定值转换为字符串。 8. `type.isValid(val, [opts])`: 检查给定值是否是有效值。 9. `type.clone(val, [opts])`: 创建给定值的深度复制。 10. `type.compare(val1, val2)`: 比较两个值的大小。 11. `type.compareBuffers(buf1, buf2)`: 比较两个二进制缓冲区的大小。 12. `type.random()`: 生成一个新的随机值。 13. `type.getName([noRef])`: 获取类型的名称。 14. `type.getSchema([noDeref])`: 获取类型的模式。 15. `type.getItemsType()`: 获取数组或映射的类型。 16. `type.getAliases()`: 获取类型的别名。 17. `type.getSize()`: 获取类型的大小。 18. `type.getValuesType()`: 获取枚举或固定类型的值类型。 ## 约束与限制 在下述版本验证通过: - DevEco Studio: NEXT Beta1-5.0.3.806, SDK: API12 Release (5.0.0.66) - DevEco Studio 版本: 4.1 Canary(4.1.3.317), OpenHarmony SDK:API11 (4.1.0.36) ## 目录结构 ```` |---- avro | |---- entry # 示例代码文件夹 | |---- library # avro库文件夹 | |---- README.md # 安装使用方法 ```` ## 贡献代码 使用过程中发现任何问题都可以提 [Issue](https://gitee.com/openharmony-sig/avro/issues) 给我们,当然,我们也非常欢迎你给我们发 [PR](https://gitee.com/openharmony-sig/avro/pulls) 。 ## 开源协议 本项目基于 [Apache License 2.0](https://gitee.com/openharmony-sig/avro/blob/master/LICENSE) ,请自由地享受和参与开源。