如何解决我们如何从Kafka生产者代码中的Avro Schema访问数组字段?
我具有以下Avro架构:
`{
"name": "ABC","type": "record","namespace": "com.schema.avro","fields": [
{
"name": "str1","type": "string"
},{
"name": "arrData","type":["null",{
"type": "array","items": {
"name": "arrData_record","fields": [
{
"name": "var1","type": ["null","string"],"default": null
},{
"name": "var2","int"],"default": null
}
]
}
}
],"default": null
}
]
}`
我使用了POM.XML Maven插件来生成类。
插件生成了以下2类-
i)ABC
ii)arrData_record
我可以使用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();
,
即使我接受了Nic的回答并且该回答是正确的,我还是最终使用了下面的代码,因为我想在Var1和Var2-中添加多个值。
使用以下代码填充arrData_record的对象-
arrData_record a1 = arrData_record.newBuilder() .setVar1(“ abc”) .setVar2(1) .build();
arrData_record a2 = arrData_record.newBuilder() .setVar1(“ def”) .setVar2(2) .build();
将其添加到列表arrData-
arrData.add(a1); arrData.add(a2);
最后添加了arrData-
ABC abc = ABC.newBuilder() .setStr1(“随机值”) .setarrData(arrData) .build()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。