这是我的Avro架构。
{
"namespace": "example.avro",
"type": "record",
"name": "User",
"fields": [
{
"name": "name",
"type": "string"
},
{
"name": "favorite_number",
"type": ["int", "null"]
},
{
"name": "favorite_color",
"type": ["string", "null"]
}
]
}
我的示例Java程序使用Avro v1.11.3生成随机JSON消息。
package org.example;
import org.apache.avro.Schema;
import org.apache.avro.util.RandomData;
import java.io.IOException;
import java.io.InputStream;
import java.util.Iterator;
public class MyTest {
public static void main(String [] args) throws IOException {
MyTest me = new MyTest();
ClassLoader classLoader = me.getClass().getClassLoader();
InputStream is = classLoader.getResourceAsStream("person.avsc");
Schema schema = new Schema.Parser().parse(is);
Iterator<Object> it = new RandomData(schema, 1).iterator();
System.out.println(it.next());
}
}
下面是生成的JSON消息。在验证模式时,它显然是一个无效的JSON。
{
"name": "rymhxcnbcyohbtjmouegufvchxh",
"favorite_number": 4211,
"favorite_color": "red"
}
正确的和预期的JSON消息应该包含这样的UNION类型
{
"name": "rymhxcnbcyohbtjmouegufvchxh",
"favorite_number": {
"int": 4211
},
"favorite_color": {
"string": "red"
}
}
所以,问题是如何生成一个JSON示例,包括UNION类型作为上面的正确输出。
1条答案
按热度按时间weylhg0b1#
虽然我还不能发表评论,但我想帮助:为什么需要JSON?您是否希望基于该JSON生成一条新记录?