json - 如何从 Avro Schema 创建有效的 JSON 示例?

标签 json apache-kafka avro

有一个相当复杂的 Avro 模式(我无法修改)。

尝试在 Java 中模拟 JSON 示例:

GenericRecord genericRecord = AvroUtil.jsonToGenericRecord(jsonData, avroSchema);

它一直失败:
Exception in thread "main" org.apache.avro.AvroTypeException: Expected start-union. Got VALUE_STRING

有没有例如可以为任何给定的 Avro 模式提供 JSON 数据示例的在线工具? (以便它可以正确匹配)

尝试模拟 JSON 数据数小时,但仍然没有成功。

最佳答案

您可以使用 trevni 创建随机数据依赖和测试范围。这里有一个示例代码

import org.apache.avro.Schema;
import org.apache.trevni.avro.RandomData;

import java.util.Iterator;

public class JSONExample {
    public static void main(String [] args){
        Schema schema = new Schema.Parser().parse("{\n" +
                "     \"type\": \"record\",\n" +
                "     \"namespace\": \"com.acme\",\n" +
                "     \"name\": \"Test\",\n" +
                "     \"fields\": [\n" +
                "       { \"name\": \"name\", \"type\": \"string\" },\n" +
                "       { \"name\": \"age\", \"type\": \"int\" },\n" +
                "       { \"name\": \"sex\", \"type\": \"string\" },\n" +
                "       { \"name\": \"active\", \"type\": \"boolean\" }\n" +
                "     ]\n" +
                "}");

        Iterator<Object> it = new RandomData(schema, 1).iterator();
        System.out.println(it.next());
    }
}

输出
{"name": "cjnyvbmetf", "age": -1757126879, "sex": "", "active": false}

Maven 依赖项
<dependencies>
    <dependency>
        <groupId>org.apache.avro</groupId>
        <artifactId>avro</artifactId>
        <version>1.8.2</version>
    </dependency>
    <dependency>
        <groupId>org.apache.avro</groupId>
        <artifactId>trevni-core</artifactId>
        <classifier>tests</classifier>
        <version>1.8.2</version>
    </dependency>
    <dependency>
        <groupId>org.apache.avro</groupId>
        <artifactId>trevni-avro</artifactId>
        <classifier>tests</classifier>
        <version>1.8.2</version>
    </dependency>
</dependencies>

关于json - 如何从 Avro Schema 创建有效的 JSON 示例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50224964/

相关文章:

javascript - 如何循环对象数组来求解简单的求和

apache-kafka - transaction.state.log.min.isr 到底是什么意思?

apache-kafka - 卡夫卡领导人选举何时举行?

mapreduce - Avro 入门

java - 使用 Gson 反序列化对象 Json 列表

javascript - 带换行符的 HTML 中的 JSON

apache-kafka - 为什么要使用 KStream 或 KTable?

hadoop - 指向本地文件的 AvroStorage schema_uri 不起作用

java - Spring Cloud kafka和avro序列化问题

javascript - 如何在 javascript 中将 Json 字符串附加到另一个 Json 字符串