feat(codec): Add Jackson 3 support module (feign-jackson3)#3162
Merged
velo merged 3 commits intoOpenFeign:masterfrom Feb 6, 2026
Merged
feat(codec): Add Jackson 3 support module (feign-jackson3)#3162velo merged 3 commits intoOpenFeign:masterfrom
velo merged 3 commits intoOpenFeign:masterfrom
Conversation
This commit introduces a new module `feign-jackson3` that provides support for Jackson 3.x, alongside the existing `feign-jackson` module which continues to support Jackson 2.x. ## Changes ### Module Creation - Created new `jackson3` module based on `feign-jackson` - Added module to parent POM ### Jackson 3 Migration - **Dependency**: Upgraded to Jackson 3.0.2 (`tools.jackson.core:jackson-databind`) - **Package changes**: Migrated from `com.fasterxml.jackson.*` to `tools.jackson.*` - Exception: `com.fasterxml.jackson.annotation` remains unchanged (as per Jackson 3 spec) - **Maven coordinates**: Updated groupId from `com.fasterxml.jackson.core` to `tools.jackson.core` ### API Changes - **Immutable ObjectMapper**: Replaced direct `ObjectMapper` instantiation with `JsonMapper.builder()` - All configuration now done via builder pattern - **Exception handling**: - Jackson 3 uses `JacksonException` (unchecked) instead of `IOException` (checked) - Updated catch blocks to handle `JacksonException` and extract `IOException` from cause when needed - **Module type**: Changed from `Module` to `JacksonModule` ### Configuration - **Default settings**: Respects Jackson 3 defaults (improved security) - `FAIL_ON_TRAILING_TOKENS` enabled by default (new in Jackson 3) - Explicitly disabled for `Jackson3IteratorDecoder` only (required for streaming array elements) - **Java version**: Minimum Java 17 required (Jackson 3 baseline) ### Classes - `Jackson3Decoder`: Standard JSON decoder for Jackson 3 - `Jackson3Encoder`: Standard JSON encoder for Jackson 3 - `Jackson3IteratorDecoder`: Streaming iterator decoder for large JSON arrays ### Tests - Migrated all tests from `feign-jackson` - Updated to use Jackson 3 APIs (`tools.jackson.*` packages) - Updated method names for Jackson 3 API changes (e.g., `getCurrentName()` → `currentName()`) - All tests passing ✅ ## Migration Notes Users can migrate from `feign-jackson` to `feign-jackson3` by: 1. Updating dependency to `feign-jackson3` 2. Changing imports from `feign.jackson.*` to `feign.jackson3.*` 3. Ensuring Java 17+ is available Both modules can coexist in the same project if needed. ## References - [Jackson 3 Migration Guide](https://github.com/FasterXML/jackson/blob/main/jackson3/MIGRATING_TO_JACKSON_3.md) - [Jackson 3.0 Release Notes](https://github.com/FasterXML/jackson/wiki/Jackson-Release-3.0)
Closed
yvasyliev
approved these changes
Jan 10, 2026
|
Guys when you expect to release it? |
pcsiszar-bw
approved these changes
Feb 4, 2026
|
Would very much love to see this released soon |
Contributor
|
Would be nice to have at least a pre-release version of it to start upgrading applications to Spring Boot 4 with Jackson 3. |
velo
approved these changes
Feb 6, 2026
Signed-off-by: Marvin Froeder <velo.br@gmail.com> # Conflicts: # pom.xml
…dules Signed-off-by: Marvin Froeder <velo.br@gmail.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This commit introduces a new module
feign-jackson3that provides support for Jackson 3.x, alongside the existingfeign-jacksonmodule which continues to support Jackson 2.x.Changes
Module Creation
jackson3module based onfeign-jacksonJackson 3 Migration
tools.jackson.core:jackson-databind)com.fasterxml.jackson.*totools.jackson.*com.fasterxml.jackson.annotationremains unchanged (as per Jackson 3 spec)com.fasterxml.jackson.coretotools.jackson.coreAPI Changes
ObjectMapperinstantiation withJsonMapper.builder()JacksonException(unchecked) instead ofIOException(checked)JacksonExceptionand extractIOExceptionfrom cause when neededModuletoJacksonModuleConfiguration
FAIL_ON_TRAILING_TOKENSenabled by default (new in Jackson 3)Jackson3IteratorDecoderonly (required for streaming array elements)Classes
Jackson3Decoder: Standard JSON decoder for Jackson 3Jackson3Encoder: Standard JSON encoder for Jackson 3Jackson3IteratorDecoder: Streaming iterator decoder for large JSON arraysTests
feign-jacksontools.jackson.*packages)getCurrentName()→currentName())Migration Notes
Users can migrate from
feign-jacksontofeign-jackson3by:feign-jackson3feign.jackson.*tofeign.jackson3.*Both modules can coexist in the same project if needed.
References