簡體   English   中英

Avro union-在結果json中鍵入信息

[英]Avro union - type information in resulting json

我有一個Java應用程序的一部分,該應用程序將AVRO編碼的對象寫入Kafka主題。 我使用org.apache.kafka.clients.producer.Producer將消息發送到主題中。 生產者配置為使用io.confluent.kafka.serializers.KafkaAvroSerializer

AVRO模式除其他外包含以下字段:

{
  "name": "field1",
  "type": [
    "null",
    "string"
  ],
  "default": null
}

這基本上意味着它是一個字符串字段,可以為null。

將對象發送到主題之后,我使用以下終端命令檢查其內容:

./kafka-avro-console-consumer --bootstrap-server broker-host:9091 --topic test-topic-1
  --property schema.registry.url=http://schema-host:8081 --from-beginning

結果,我期望看到一個具有以下屬性的JSON:

{"field1": "something"}

但是,實際上我看到了這一點:

{"field1": {"string": "something"}}

除此之外,如果我在擴展SpecificRecordBase的對象上簡單地使用toString()方法,然后再將其實際發送到主題,那么我將看到一個JSON的格式符合我的期望。

有沒有一種方法可以真正獲得該主題中的第一個選項,而無需將此額外的類型信息作為JSON的一部分?

有沒有一種方法可以真正獲得該主題中的第一個選項,而無需將此額外的類型信息作為JSON的一部分?

沒有avro-console-consumer 它正在使用GenericRecord ,而不是SpecificRecord

由於該字段是聯合類型,因此Avro Record JSON編碼的輸出必須包括該值的字段type

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM