Jackson data format module for reading and writing Ion encoded data.
Project is licensed under Apache License 2.0.
Since version 2.8 this module is considered complete and production ready. All Jackson layers (streaming, databind, tree model) are supported.
To use this extension on Maven-based projects, use following dependency:
<dependency>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-ion</artifactId>
<version>2.16.0</version>
</dependency>
Basic usage is by using IonObjectMapper
instead of basic ObjectMapper
;
or, if only using streaming parser/generator, IonFactory
instead of JsonFactory
.
ObjectMapper mapper = new IonObjectMapper();
// and then read/write data as usual
SomeType value = ...;
byte[] encoded = mapper.writeValueAsBytes(value);
SomeType otherValue = mapper.readValue(data, SomeType.class);
Version 2.12 (released on November 28, 2020) added support for
(de)serializing some java.time
classes directly from/to Ion timestamp values.
To enable it, you need to register module IonJavaTimeModule
like so:
IonObjectMapper mapper = IonObjectMapper.builder()
.addModule(new IonJavaTimeModule())
//Disable writing dates as numeric timestamp values to allow writing as Ion timestamp values.
.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS)
.build();
See Wiki (includes Javadocs)