githubEdit

Built-In SerDes

SerDes included in a default distribution

Int32, Int64, UInt32, UInt64

Big-endian 4/8 bytes representation of signed/unsigned integers.

Base64

Base64 (RFC4648) binary data representation. It can be useful in cases where the actual data is not important, but the same (byte-wise) key/value should be sent.

Hex

Hexadecimalarrow-up-right binary data representation. The byte delimiter and case can be configured.

Class name: io.kafbat.ui.serdes.builtin.HexSerde

kafka:
  clusters:
    - name: Cluster1
      # Other Cluster configuration omitted ... 
      serde:
        - name: HexWithEditedDelimiter
          className: io.kafbat.ui.serdes.builtin.HexSerde
          properties:
            uppercase: "false"
            delimiter: ":"

String

Treats binary data as a string in the specified encoding. Default encoding is UTF-8.

Class name: io.kafbat.ui.serdes.builtin.StringSerde

Sample configuration (if you want to overwrite the default configuration):

ProtobufFile

Class name: io.kafbat.ui.serdes.builtin.ProtobufFileSerde

Sample configuration:

ProtobufRawDecoder

Deserialize-only serde. Decodes protobuf payload without a predefined schema (like protoc --decode_raw command).

SchemaRegistry

SchemaRegistry serde is automatically configured if schema registry properties are set on the cluster level. But you can add new SchemaRegistry-typed serdes that will connect to another schema-registry instance.

Class name: io.kafbat.ui.serdes.builtin.sr.SchemaRegistrySerde

Sample configuration:

Avro Display Options

The SchemaRegistry serde supports additional options for controlling how Avro messages are displayed in the UI:

Property
Type
Default
Description

showNullValues

boolean

false

When true, fields with null values are displayed as "field": null. When false (default), null fields are omitted from the output.

useFullyQualifiedNames

boolean

false

When true, union types always use fully qualified names (e.g., {"io.kafbat.test.NestedRecord": {...}}). When false (default), short names are used unless there's a name collision within the union.

These options can be configured in two ways:

Option 1: Cluster-level configuration (auto-config)

When using the auto-configured SchemaRegistry serde, set these properties at the cluster level:

Or as environment variables:

Option 2: Explicit serde configuration

When configuring the SchemaRegistry serde explicitly, set these in the serde properties:

Or as environment variables:

Example output

Given an Avro schema with nullable fields:

With default settings (showNullValues: false, useFullyQualifiedNames: false):

With showNullValues: true and useFullyQualifiedNames: true:

Last updated

Was this helpful?