Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从卡夫卡生产者代码中的Avro模式访问数组字段?_Java_Arrays_Apache Kafka_Avro - Fatal编程技术网

Java 如何从卡夫卡生产者代码中的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",

我有以下Avro模式:

    `{
      "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) ABC
ii)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()

你好,希瓦姆。生成的代码是什么样子的?嗨,希瓦姆。生成的代码是什么样子的?