MCPcopy Index your code
hub / github.com/FasterXML/jackson-dataformats-binary

github.com/FasterXML/jackson-dataformats-binary @jackson-dataformats-binary-3.2.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release jackson-dataformats-binary-3.2.0 ↗ · + Follow
5,640 symbols 21,352 edges 580 files 591 documented · 10% updated today★ 34756 open issues
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Overview

This is a multi-module umbrella project for Jackson standard binary dataformat backends.

Dataformat backends are used to support format alternatives to JSON, using general-purpose Jackson API. Formats included allow access using all 3 API styles (streaming, databinding, tree model).

For Jackson 2.x this is done by sub-classing Jackson core abstractions of:

  • All backends sub-class JsonFactory, which is factory for:
    • JsonParser for reading data (decoding data encoding in supported format)
    • JsonGenerator for writing data (encoding data using supported format)
  • Starting with 2.10 there is also sub-class of ObjectMapper (like CBORMapper, SmileMapper) for all formats, mostly for convenience
  • Jackson 2.10 also added "Builder" style construction for above-mentioned factories, mappers.

Status

Build (github) Fuzzing Status

Binary formats supported

Currently included backends are:

License

All modules are licensed under Apache License 2.0.

Maven dependencies

To use these format backends Maven-based projects, use following dependency:

<dependency>
    <groupId>com.fasterxml.jackson.dataformat</groupId>
    <artifactId>jackson-dataformat-[FORMAT]</artifactId>
    <version>2.18.1</version>
</dependency>

where [FORMAT] is one of supported modules (avro, cbor, smile etc)

Development

Maintainers

  • Author: Tatu Saloranta (@cowtowncoder)
  • Active Maintainers:
    • Michael Liedtke (@mcliedtke) (Ion backend)

You may at-reference them as necessary but please keep in mind that all maintenance work is strictly voluntary (no one gets paid to work on this or any other Jackson components) so there is no guarantee for timeliness of responses.

Branches

master branch is for developing the next major Jackson version -- 3.0 -- but there are active maintenance branches in which much of development happens:

  • 2.19 is for developing the next 2.x version
  • 2.18 and 2.17 are for backported fixes for 2.18/2.17 versions (respectively)

Older branches are usually not changed but are available for historic reasons. All released versions have matching git tags (jackson-dataformats-binary-2.10.3).

Note that since individual format modules used to live in their own repositories, older branches (before 2.8) and tags do not exist in this repository.

Other Jackson binary backends

In addition to binary format backends hosted by FasterXML in this repo, there are other known Jackson backends for binary data formats. For example:

More

See Wiki for more information (javadocs).

Extension points exported contracts — how you extend this code

EncodedDatum (Interface)
Interface for handling opaque avro-encoded objects. These can be written with {@link AvroGenerator#writeEmbeddedObject(O [9 …
avro/src/main/java/tools/jackson/dataformat/avro/ser/EncodedDatum.java
TypeElementBuilder (Interface)
(no doc) [17 implementers]
protobuf/src/main/java/tools/jackson/dataformat/protobuf/schemagen/TypeElementBuilder.java
MultipleTypeIdResolver (Interface)
This is an extension of TypeIdResolver for serializing and deserializing polymorphic types. The vanilla implemen [2 implementers]
ion/src/main/java/tools/jackson/dataformat/ion/polymorphism/MultipleTypeIdResolver.java
SchemaBuilder (Interface)
(no doc) [18 implementers]
avro/src/main/java/tools/jackson/dataformat/avro/schema/SchemaBuilder.java
WireType (Interface)
Enumeration of wire types that protobuf specification defines
protobuf/src/main/java/tools/jackson/dataformat/protobuf/schema/WireType.java
MockObjectConfiguration (Interface)
(no doc)
ion/src/test/java/tools/jackson/dataformat/ion/jsr310/MockObjectConfiguration.java
Animal (Interface)
(no doc) [3 implementers]
avro/src/test/java/tools/jackson/dataformat/avro/interop/annotations/UnionTest.java
Animal (Interface)
(no doc) [2 implementers]
avro/src/test/java/tools/jackson/dataformat/avro/interop/annotations/UnionResolvingTest.java

Core symbols most depended-on inside this repo

nextToken
called by 470
cbor/src/main/java/tools/jackson/dataformat/cbor/CBORParser.java
readValue
called by 388
ion/src/main/java/tools/jackson/dataformat/ion/IonObjectMapper.java
build
called by 337
protobuf/src/main/java/tools/jackson/dataformat/protobuf/schemagen/TypeElementBuilder.java
get
called by 285
ion/src/test/java/tools/jackson/dataformat/ion/IonFactoryTest.java
add
called by 263
cbor/src/main/java/tools/jackson/dataformat/cbor/CBORParser.java
size
called by 260
cbor/src/main/java/tools/jackson/dataformat/cbor/CBORParser.java
createParser
called by 225
ion/src/main/java/tools/jackson/dataformat/ion/IonFactory.java
write
called by 187
avro/src/main/java/tools/jackson/dataformat/avro/ser/EncodedDatum.java

Shape

Method 4,519
Class 1,006
Function 50
Enum 49
Interface 16

Languages

Java99%
TypeScript1%

Modules by API surface

cbor/src/main/java/tools/jackson/dataformat/cbor/CBORParser.java143 symbols
avro/src/main/java/tools/jackson/dataformat/avro/deser/ScalarDecoder.java133 symbols
smile/src/main/java/tools/jackson/dataformat/smile/SmileParser.java97 symbols
protobuf/src/main/java/tools/jackson/dataformat/protobuf/ProtobufParser.java89 symbols
avro/src/test/java/tools/jackson/dataformat/avro/AvroTestBase.java73 symbols
smile/src/main/java/tools/jackson/dataformat/smile/SmileGenerator.java72 symbols
avro/src/main/java/tools/jackson/dataformat/avro/deser/AvroParserImpl.java64 symbols
cbor/src/main/java/tools/jackson/dataformat/cbor/CBORGenerator.java63 symbols
avro/src/main/java/tools/jackson/dataformat/avro/deser/JacksonAvroParserImpl.java63 symbols
protobuf/src/main/java/tools/jackson/dataformat/protobuf/ProtobufGenerator.java58 symbols
ion/src/main/java/tools/jackson/dataformat/ion/IonParser.java52 symbols
smile/src/main/java/tools/jackson/dataformat/smile/async/NonBlockingByteArrayParser.java51 symbols

For agents

$ claude mcp add jackson-dataformats-binary \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact