Java 如何从卡夫卡生产者代码中的Avro模式访问数组字段?
我有以下Avro模式:Java 如何从卡夫卡生产者代码中的Avro模式访问数组字段?,java,arrays,apache-kafka,avro,Java,Arrays,Apache Kafka,Avro,我有以下Avro模式: `{ "name": "ABC", "type": "record", "namespace": "com.schema.avro", "fields": [ { "name": "str1",
`{
"name": "ABC",
"type": "record",
"namespace": "com.schema.avro",
"fields": [
{
"name": "str1",
"type": "string"
},
{
"name": "arrData",
"type":["null",
{
"type": "array",
"items": {
"name": "arrData_record",
"type": "record",
"fields": [
{
"name": "var1",
"type": ["null","string"],
"default": null
},
{
"name": "var2",
"type": ["null","int"],
"default": null
}
]
}
}
],
"default": null
}
]
}`
我使用POM.xmlmaven插件来生成类。
插件生成了以下2个类-
i) ABCii)ARRU数据记录 我可以使用ABC的str1字段,如下所示:
ABC abc = ABC.newBuilder()
.setStr1("random value")
.build()
同样,我也得到了一个使用.setArrData()的选项
我想使用.setVar1()和.setVar2()以类似的方式设置数组字段
如何使用Array类中的字段并进行类似的设置?任何示例代码都会有很大帮助
谢谢。从Avro模式生成的类可以这样操作
ABC
.newBuilder()
.setArrData(Collections.singletonList(arrData_record
.newBuilder()
.setVar1("Var1")
.setVar2(2)
.build()))
.build();
从Avro模式生成的类可以这样操作
ABC
.newBuilder()
.setArrData(Collections.singletonList(arrData_record
.newBuilder()
.setVar1("Var1")
.setVar2(2)
.build()))
.build();
尽管我接受了Nic的答案,并且这个答案是正确的,但我最终还是使用了下面的代码,因为我想在Var1和Var2中添加多个值- 使用以下代码填充arrData_记录的对象- arrData\u record a1=arrData\u record.newBuilder() .setVar1(“abc”) .setVar2(1) .build() arrData\u record a2=arrData\u record.newBuilder() .setVar1(“def”) .setVar2(2) .build() 将其添加到列表数据中- 添加数据(a1); 添加(a2) 最后添加了数据- ABC=ABC.newBuilder() .setStr1(“随机值”) .setarrData(arrData)
.build()尽管我接受了Nic的答案,而且答案是正确的,但我最终还是使用了下面的代码,因为我想在Var1和Var2中添加多个值- 使用以下代码填充arrData_记录的对象- arrData\u record a1=arrData\u record.newBuilder() .setVar1(“abc”) .setVar2(1) .build() arrData\u record a2=arrData\u record.newBuilder() .setVar1(“def”) .setVar2(2) .build() 将其添加到列表数据中- 添加数据(a1); 添加(a2) 最后添加了数据- ABC=ABC.newBuilder() .setStr1(“随机值”) .setarrData(arrData)
.build()你好,希瓦姆。生成的代码是什么样子的?嗨,希瓦姆。生成的代码是什么样子的?