如何正确地将 avro 模式转换为 json 模式

Eug*_*erg 5 java json avro jackson-dataformat-avro

我有以下 json 数据对象:

{
    "name": "John",
    "favorite_number": 5,
    "favorite_color" : "green"
}
Run Code Online (Sandbox Code Playgroud)

此对象的 JSON 架构如下所示:

{
    "$schema": "http://json-schema.org/draft-04/schema#",
    "title": "Person",
    "description": "some description",
    "type": "object",
    "properties": {
        "name": {
            "description": "name",
            "type": "string"
        },
        "favorite_number": {
            "type": "number",
        },
        "favorite_color": {
            "type": "string",
        },
    },
    "required": ["name", "favorite_number","favorite_color"]
}
Run Code Online (Sandbox Code Playgroud)

我可以使用这个 JSON 模式来验证我的数据对象是否符合它:

public static boolean isJsonValid(String schemaText, String jsonText) throws ProcessingException, IOException
    {   
        final JsonSchema schemaNode = getSchemaNode(schemaText);
        final JsonNode jsonNode = getJsonNode(jsonText);
        return isJsonValid(schemaNode, jsonNode);
    } 
Run Code Online (Sandbox Code Playgroud)

在我的 Java 应用程序中,我从 REST API 调用接收到此对象的相应 AVRO 模式,该模式如下所示:

{
 "namespace": "example.avro",
 "type": "record",
 "name": "Person",
 "fields": [
     {"name": "name", "type": "string"},
     {"name": "favorite_number",  "type": ["int", "null"]},
     {"name": "favorite_color", "type": ["string", "null"]}
 ]
}
Run Code Online (Sandbox Code Playgroud)

是否有一种普遍可接受的方式将这种 AVRO 模式转换为 JSON 模式?

小智 -3

  1. 下载:(avro-tools-1.7.4.jar来自存储库的最新版本)
  2. 跑步:java -jar avro-tools-1.7.4.jar tojson avro-filename.avro>output-filename.json

这将create output-filename.json包含所有数据。如果output-filename.json已经存在,它将覆盖它。

  • 那是 JSON 而不是 SCHEMA! (3认同)