Neatbo.

Avro写入与读取Schema兼容检查

检查两份本地Avro JSON Schema的双向读取兼容性,区分类型提升、别名、默认值与不兼容原因。

浏览器本地处理输入Avro写入 / 读取Schema JSON输出JSON / CSV单个文件最多 1 MiB · 最多 1 个
  1. 1添加输入
  2. 2调整设置
  3. 3获取结果

工具输入和文件在当前浏览器处理,不会上传。

输入内容

切换工具时在当前标签页临时保留输入。刷新或关闭后清除,较大的结果可能需要重新生成。

⌘ / Ctrl + Enter 运行

或将文件拖到这里

文件留在当前设备,原始文件不会被覆盖。

.avsc · .json · .txt

单个文件最多 1 MiB · 最多 1 个

    0 个字符 · 0 字节
    处理选项

    先填写标记为必填的选项,其余可保留默认值。

    正在准备处理工具…

    开始之前

    明确谁写数据、谁读取,再检查两种方向。合法但不兼容的Schema会生成完整报告,帮助确认字段新增、改名与类型变化的影响。

    如何使用

    1. 提供原始写入Schema和目标读取Schema。
    2. 先检查写入→读取,再检查反向;查看false结果的底层解析原因。
    3. 确认本工具支持边界与业务的数据值约束,再下载JSON或CSV报告。

    支持范围与限制

    写入Schema可粘贴或选择一份UTF-8文件,读取Schema填在第二输入区;每份最多1 MiB、10000个JSON值与32层。选中文件优先于主文本。重复键、非有限数与不安全整数拒绝,不静默舍入默认值。

    支持primitive、record、enum、fixed、array、map、union和具名递归引用,检查写入→读取与读取→写入。完整名称包含namespace;读取方alias、字段默认值和数值提升按Avro解析规则处理。fixed size为1至1048576,结构遍历最多10000节点/32层。

    固定avsc5.7.9解析器:union字段默认值必须属于第一分支,暂不接受较新规范中其他匹配分支的默认值。任何logicalType明确拒绝。名称、namespace、alias、字段名或enum symbol出现__proto__、constructor、prototype片段均明确不支持。

    只比较Schema解析兼容性,不执行数据、IDL、Schema Registry策略、脚本或服务,也不请求网络。库内部受控resolver代码只在同源独立HTTP Worker执行;Blob Worker和页面内运行受生产CSP限制。底层错误文字不被伪装成精确字段路径。报告含完整双向结果与CSV。

    操作示例

    示例输入

    {
      "type": "record",
      "name": "Contact",
      "fields": [
        {
          "name": "id",
          "type": "int"
        }
      ]
    }
    示例参数
    {"secondary":"{\n  \"type\": \"record\",\n  \"name\": \"Contact\",\n  \"fields\": [\n    {\n      \"name\": \"id\",\n      \"type\": \"long\"\n    },\n    {\n      \"name\": \"label\",\n      \"type\": \"string\",\n      \"default\": \"\"\n    }\n  ]\n}"}

    示例输出

    {
      "writerName": "Contact",
      "readerName": "Contact",
      "writerToReader": {
        "direction": "supplied writer → supplied reader",
        "compatible": true,
        "resolutionError": null
      },
      "readerToWriter": {
        "direction": "supplied reader → supplied writer",
        "compatible": false,
        "resolutionError": "cannot read \"long\" as \"int\""
      },
      "policy": "schema-resolution-only; no registry policy or datum execution"
    }

    出现问题时

    修复JSON、Schema名称或默认值,明确处理不支持的logicalType,再运行示例确认可恢复。合法false无需修改输入才能下载;只代表该方向不兼容。

    常见问题

    false代表输入无效吗?

    不一定。两份Schema都合法但无法按该方向解析时,报告会明确false;语法错误或不支持的Schema会直接失败。

    这是Schema Registry的兼容策略吗?

    不是。这里只检查指定写入/读取Schema的解析关系,不替代Registry的历史版本或策略检查。

    支持logicalType或新union默认值吗?

    目前明确拒绝logicalType;union默认值必须匹配首分支。请不要删除语义后把结果当作原Schema结论。

    文档与延伸阅读

    相关工具