-
-
Notifications
You must be signed in to change notification settings - Fork 1.5k
Expand file tree
/
Copy pathVERSION
More file actions
598 lines (555 loc) · 26.6 KB
/
Copy pathVERSION
File metadata and controls
598 lines (555 loc) · 26.6 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
Project: jackson-databind
Versions: 3.x (for earlier see VERSION-2.x)
------------------------------------------------------------------------
=== Releases ===
------------------------------------------------------------------------
3.2.0 (not yet released)
No changes since 3.1
3.1.4 (not yet released)
#5950: Improve `UUIDeserializer` error handling
(reported, fix suggested by Omkhar A)
#5951: Improve `InetSocketAddress` deserialization
(reported by Omkhar A)
#5956: Fix problem with float-to-byte range check
(reported, fix suggested by Omkhar A)
#5957: Improve `java.time.Month` deserialization validation
(fix by Omkhar A)
#5962: Case-insensitive deserialization may use wrong `@JsonIgnoreProperties`
(fixed by Omkhar A)
3.1.3 (01-May-2026)
#5898: `DoubleDeserializer` rejects "+INF"/"+Infinity" despite accepting
"INF"/"Infinity" and "-INF"/"-Infinity"
(reported by Kenta Y)
(fix by @cowtowncoder)
#5911: Deserialization failed with `@JsonUnwrapped` and `@JsonAlias` on
a property of the unwrapped type
(reported by Lucas C)
(fix by @cowtowncoder, w/ Claude code)
#5918: Creator properties always come first in 3.x
(reported by Marco B)
(fix by @cowtowncoder)
#5923: Deserialization behavior change with Records, `@JsonCreator` and `@JsonValue`
(reported, fixed by Joshua A)
#5925: Pass dynamic serializer for `Iterable` content filtering
(fixed by Lee Jiwon)
#5931: Fix `AtomicLongDeserializer` value truncation on coerced values
(fixed by Lee Jiwon)
#5941: `MapperBuilder.addModule()` does not recursively register transitive
module dependencies (3.x regression from 2.x)
(reported by Michael O)
3.1.2 (11-Apr-2026)
#5857: `TypeFactory._fromParamType` StackOverflowError with mutually recursive
generic bounds (regression in 3.1.0, introduced by fix for [databind#5285])
(reported by @sylvaindd)
(fix by @pjfanning w/ @Copilot)
#5865: `@JsonIgnoreProperties` does not work alongside
`DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES`
(reported by Lavender S)
(fix by @cowtowncoder, w/ Claude code)
#5867: Fix `Map.Entry` deserialization for property-level
`Shape.NATURAL` override
(fixed by Lee Jiwon)
#5870: `EnumMap` and `EnumSet` properties ignore `@JsonDeserialize(contentConverter)`
(fixed by Lee Jiwon)
#5884: Exception when using `@JsonUnwrapped` alongside with `@JsonAlias`
on another property
(reported by Aleksandr G)
(fix by @cowtowncoder, w/ Claude code)
#5891: `EnumMapDeserializer._deserializeUsingProperties()` corrupts parser
state after skipping unknown enum keys
(fixed by Lee Jiwon)
3.1.1 (27-Mar-2026)
#5710: `ObjectWriter` transforms polymorphic types into a tree incompletely
(reported by Brandon S)
(fix by @cowtowncoder, w/ Claude code)
#5716: `@JsonUnwrapped` properties moved to end in 3.1.0
(reported by Viktor S)
(fix by @cowtowncoder, w/ Claude code)
#5728: `@JsonUnwrapped`doesn't work for delegating ValueDeserializer (even
one delegating to `BeanDeserializerBase`)
(reported by Alessandro N)
#5785: Wrong path in `InvalidFormatException` for nested fields
and `BuilderBasedDeserializer`
(reported and fixed by David A)
#5786: Regression in `TokenBuffer#forceUseOfBigDecimal`
(reported by Sébastien D)
(fix by @cowtowncoder, w/ Claude code)
#5813: `JsonMapper` not thread-safe when using custom serializers
(reported by Stephan L)
(fix by @pjfanning)
#5814: Enum deserialization does not respect
`JsonFormat.Feature.ACCEPT_CASE_INSENSITIVE_VALUES` override
(reported by David N)
(fix by @cowtowncoder, w/ Claude code)
#5819: `JsonNodeFeature.STRIP_TRAILING_BIGDECIMAL_ZEROES` not
working with `ObjectMapper.valueToTree()`
(reported by @pankajxeine)
(fix by @cowtowncoder, w/ Claude code)
#5840: Jackson 2.21 throws Conflicting property-based creators if both
default (0-arg) and multi-arg constructor annotated
(reported by Alexey T)
(fix by @pjfanning)
3.1.0 (23-Feb-2026)
#221: Support alternate radixes when writing numeric values as strings
(requested by Christopher C)
(implementation by Davyd F)
#429: Cannot use property annotations on `StackTraceElement` to configure
deserialization
(reported by Gary G)
#650: `@JsonUnwrapped` prevents checks for
`DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES`
(reported by Konstantin L)
(fix by @JacksonJang)
#1196: Add opt-in error collection for deserialization
(requested by @odrotbohm)
(contributed by @sri-adarsh-kumar)
#1391: Default typing adds typing info to collections even with
`@JsonTypeInfo(use = Id.NONE)` override
(reported by Jeff M)
(fix by @cowtowncoder, w/ Claude code)
#1419: `JsonFormat.Shape.POJO` does not work for `Map.Entry` via property annotation
(fix by @cowtowncoder, w/ Claude code)
#1497: Allow skipping `@JsonUnwrapped` values if no properties matched,
`DeserializationFeature.USE_NULL_FOR_EMPTY_UNWRAPPED` enabled
(requested by Victor N)
(fix by @JacksonJang)
#1516: Problem with multi-argument Creator with `@JsonBackReference` property
(reported by @sarahlikesglitter)
(fix by @JacksonJang)
#1649: `@JsonInclude(content=)` not working for `Map`-valued properties via
POJO class annotation
(fix by @cowtowncoder, w/ Claude code)
#1654: @JsonDeserialize(contentUsing=...) is ignored if content
type is determined by @JsonTypeInfo
(reported by @pdegoeje)
(fix by @cowtowncoder, @JacksonJang)
#1811: `@JsonAnySetter` and `@JsonUnwrapped` deserialize property twice
(reported by @jearton)
#1980: Add method `remove(JsonPointer)` in `ContainerNode`
(fix by @cowtowncoder, w/ Claude code)
#2124: Allow coercion of '[ ]' into empty/null String with
`ACCEPT_EMPTY_ARRAY_AS_NULL_OBJECT`
(reported by Ulf A)
(fix by @cowtowncoder, w/ Claude code)
#2343: Add `JsonNode.asArray()` and `JsonNode.asObject()`
(requested by Victor N)
#2438: Prevent use of setter/field in case Creator property
already exists, duplicate value seen
#2617: `@JsonDeserialize.converter` from an interface doesn't work
(reported by Erik H)
#2624: Allow overriding builder's "withPrefix" with new
`@JsonDeserialize.builderPrefix` property
(requested by Kenneth J)
#2686: `@JsonBackReference` does not work with a builder
(reported by @janrieke)
(fix by @JacksonJang)
#3079: Support `ObjectMapper.updateValue()` for Record classes
(requested by Dávid C)
#3084: `Nulls.AS_EMPTY` doesn't work for collections containing
values without default constructor (like Records)
(reported by Krzysztof K)
(fix by @cowtowncoder, w/ Claude code)
#3163: Huge performance problem deserializing `java.nio.file.Path`
with existing Windows Samba/CIFS mounts
(reported by @Gaibhne)
#3188: Skip unknown `Enum` keys in `Map` deserialization
(requested by @matthias-mueller)
(fixed by Lee Jiwon)
#3284: Backward compatibility for timezone formats of UTC Date
serialization
(requested by @arungitan)
(implemented by Lee Jiwon)
#3304: Backreference not set after deserialization for Abstract types
with `@JsonBackReference` only in sub-type
(reported by @Njimefo)
#3349: `DeserializationProblemHandler.handleUnexpectedToken()` no longer
invoked for array-like types
(reported by @andpal)
#3786: Deserialization of generic container (of Record type) using `EXTERNAL_PROPERTY`
fails for "natural" types (`boolean`/`long`/`String`/`double`) because
type information is missing
(fix by @cowtowncoder, w/ Claude code)
#3964: Deserialization issue: MismatchedInputException, Bean not
yet resolved
(reported by @detomarco)
#4118: Deserialization of a certain kinds of parametrized properties fail to
resolve `?` into expected bounds, resulting in `LinkedHashMap`
(reported by @Mariusz)
(fix by @cowtowncoder, w/ Claude code)
#4157: Add `MapperFeature.INFER_RECORD_GETTERS_FROM_COMPONENTS_ONLY` to ignore
getter method auto-detection for Records
(suggested by Garret W)
(fix by @cowtowncoder, w/ Claude code)
#4277: Deserialization `@JsonFormat(shape = JsonFormat.Shape.ARRAY)` POJO with
`JsonTypeInfo.As.EXTERNAL_PROPERTY` does not work
(reported by James M)
(implemented by @cowtowncoder, w/ Claude code)
#4629: `@JsonIncludeProperties` and `@JsonIgnoreProperties` ignored when
deserializing Records
(reported by Sim Y-T)
(fix contributed by @JacksonJang)
#4690: InvalidDefinitionException "No fallback setter/field defined for
creator property" when deserializing JSON with dup property to single-property Record
(reported by @sseelmann)
(fix contributed by @JacksonJang)
#4708: `JsonTypeInfo.Id.DEDUCTION` should block signatures for non-instantiable
types (abstract classes, interfaces)
(implemented by @cowtowncoder, w/ Claude code)
#4729: Object ID handling tries (unnecessarily) to set id value on a Record
(reported by John H)
(implemented by @cowtowncoder, w/ Claude code)
#5115: `@JsonUnwrapped` Record deserialization can't handle name collision
(reported by Viktor S)
(fix contributed by @JacksonJang)
#5184: `@JsonIgnore` on record method applied to record matching field
at deserialization
(reported by @emouty)
#5188: Prevent use of unsupported `@JsonManagedReference`/`@JsonBackReference`
for Record-valued properties
(reported by @JBodkin-Amphora)
(implemented by @cowtowncoder, w/ Claude code)
#5223: Java Records missing type information with `DefaultTyping.NON_FINAL`
(add `DefaultTyping.NON_FINAL_AND_RECORDS`)
(requested by @cndqjacndqja)
(implemented by @chanwonlee)
#5285: Generics using wildcard not correctly resolved
(reported by @wimdeblauwe)
(implemented by @cowtowncoder, w/ Claude code)
#5312: `JsonInclude.Include.NON_DEFAULT` regression for objects with `@JsonValue`
(reported by @LSwiatek)
(implemented by @cowtowncoder, w/ Claude code)
#5350: Add `DeserializationFeature.USE_NULL_FOR_MISSING_REFERENCE_VALUES` for
selecting `null` vs "empty/absent" value when deserializing missing `Optional` value
#5361: Fix Maven SBOM publishing (worked in 3.0.0-rc4 but not in rc5 or later)
(date-time)#359: `InstantDeserializer` deserializes the nanosecond portion of
fractional negative timestamps incorrectly
#5369: Support `@JsonInclude.content` for `Collection`s
(with `SerializationFeature.APPLY_JSON_INCLUDE_FOR_CONTAINERS`)
(implementation by Joo-Hyuk K)
#5405: `@JsonFormat(shape = Shape.POJO)` does not work for `java.util.Map`
serialization via property annotation
(fix contributed by @JacksonJang)
#5413: Add/support forward reference resolution for array values
(contributed by Hélios G)
#5442: Make `JsonMapper/ObjectMapper` fully proxyable by CGLIB
(fix contributed by Fouad A)
#5456: Additional configuration (`JsonNodeFeature.STRIP_TRAILING_BIGDECIMAL_ZEROES`: true)
to MapperBuilder#configureForJackson2 to closer match Jackson 2 behavior
(contributed by @nrayburn-tech)
#5469 : Add callback in `DeserializationProblemHandler` for "null for primitive"
problem case
(reported by @jnizet)
(fixed by Joo-Hyuk K)
#5475: Support `@JsonDeserializeAs` annotation
(implemented by @cowtowncoder, w/ Claude code)
#5485: Unchecked conversion warning in `JsonMapper` wrt `TreeCodec.readTree()`
override
(reported by Francesco C)
#5515: Support `@JsonInclude.content` for Arrays
(implemented by @JacksonJang)
#5519: Add 2 new `JavaTimeFeature`s: (`TRUNCATE_TO_MSECS_ON_WRITE`,
`TRUNCATE_TO_MSECS_ON_READ`) for truncating `java.time` values before serialization,
after deserialization
(implemented by @cowtowncoder, w/ Claude code)
#5522: `@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)`
doesn't work on custom Collection subclass
(contributed by Jaeheon K)
#5528: `TreeBuildingGenerator#writeNumber(String)` writes Number as String
(reported by @gaeljw)
#5541: Add missing `@JsonIdentityInfo` handling for implicit arrays with
`DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY`
(contributed by Moritz R)
#5542: `ObjectReader.readValue()` does not fail when
`DeserializationFeature.FAIL_ON_UNRESOLVED_OBJECT_IDS` enabled
(implemented by @cowtowncoder, w/ Claude code)
#5558: Change defaulting of `JsonNode.asXxx(defaultValue)`/`JsonNode.asXxxOpt()`
for `NullNode`
(contributed by Filip H)
#5570: Add `MapperFeature.WRAPPERS_DEFAULT_TO_NULL` to allow configuring
`JsonInclude.Include.NON_DEFAULT` default for primitive wrapper types to be `null`,
not wrapped default of primitive
#5575: Allow configuring a default serialization and deserialization view (3.x)
(requested by Réda H-A)
(implemented by @cowtowncoder, w/ Claude code)
#5579: Add `JsonNode.map()` method
#5581: Add functional conversion methods `JsonNode.nullAs()`, `JsonNode.missingAs()`
#5583 Improve `asXxx()` method impls of `MissingNode`, `POJONode(null)`,
to work like `NullNode`
(implemented by @cowtowncoder, w/ Claude code)
#5586: Change `IndexOutOfBoundsException` that `ArrayNode.set()`/`replace()`
throw to `JsonNodeException`
#5595: Add `FunctionalScalarDeserializer` for functional-style deserialization
(contributed by @jhan0121)
#5599: Reduce mutability of `JsonFormatVisitor` types in 3.1
#5616: `ObjectWriter` serializes `Optional`s with subtypes incompletely
(reported by Brandon S)
(implemented by @cowtowncoder, w/ Claude code)
#5621: Fix typo: MissingInjectableValueExcepion → MissingInjectableValueException
(implemented by Lee Jiwon)
#5630: Add `DelegatingSerializer`
(contributed by Matthew L)
#5631: Rename `StdDelegatingSerializer` to `StdConvertingSerializer` (3.0->3.1)
#5642: Wrap `DateTimeException` and `ArithmeticException` in new
`DateTimeParseException` during java.time deserialization
(implemented by @pjfanning)
#5646: `ObjectArrayDeserializer` may throw `ArrayStoreException` for some special cases
(fixed by @cowtowncoder, w/ Claude code)
#5649: Wrap `LocalDate.ofEpochDay()` and `Instant.ofEpochSecond()` to throw
`DateTimeParseException` on invalid values
(implemented by @pjfanning)
#5674: Fix NPE when deserializing `Throwable` with `null` "stackTrace"
(fix by @pjfanning)
#5683: When deserializing using `ObjectMapper::treeToValue`, NPE occurs
when `JsonParser::readValueAs` is called
(reported by @wrongwrong)
#5685: Fix issue where `_findSerializer()` was called with incorrect argument in
`StdDelegatingSerializer::isEmpty()`
(fixed by @wrongwrong)
#5686: Fix NPE where code can look for an objectId when no `_objectIdReader` is set
(fix by @pjfanning)
#5691: Validate `ByteBufferBackedInputStream.read()` parameters per `InputStream`
contract
(fix by @pjfanning)
#5706: `TokenBuffer` serialization fails when buffer contains integer
encoded as String
(reported by Kyrylo M)
3.0.4 (21-Jan-2026)
#1288 (regression in 3.0.0) Type id not exposed for `JsonTypeInfo.As.EXTERNAL_PROPERTY`
even when `visible` set to `true`
#2580: Regression with External type id / Build deserialization in 3.0
#4742 (regression in 3.0.0) Deserialization with Builder, External type id,
`@JsonCreator` failing
#5481: JsonMapper.Builder.modules(...) ignores changes after build() due to
internal saveState
(reported by @libetl)
(fix by @cowtowncoder, w/ Claude code)
3.0.3 (28-Nov-2025)
#5393: `@JsonAnyGetter` property gets included in generated schema
(reported by @victor-noel-pfx)
(fix by Joo-Hyuk K)
#5398: `@JsonProperty.value` + `@JsonIgnore` on setter does not work
anymore since 2.18.4
(reported by @victor-noel-pfx)
(fix by @cowtowncoder, w/ Claude code)
#5401: Regression with `@JsonCreator` that returns `null` for empty strings
(fix contributed by Joost K)
#5408: Jackson 3 `JsonNode#required(java.lang.String)` throws `JsonNodeException`
different from JavDoc
(reported by @jochenberger)
(fix by Joo-Hyuk K)
#5414: `NullPointerException` in `AnnotatedMember.annotations()` when
no annotations are present
(reported by Benjamin H)
#5416: Annotations on an interface that's part of a JDK proxy are not honored
with Jackson 3
(reported by Andy W)
(fix contributed by Fouad A)
3.0.2 (07-Nov-2025)
#5203: Fix `null` handling of `EnumSetDeserializer`
#5372: Wrong setter is used when deserializing from `InputStream` (or `byte[]`)
(NOTE: actual fix via jackson-core#1491)
(reported by @quaff)
3.0.1 (21-Oct-2025)
#5335: JsonMapper to deserialize `Optional.empty()` instead of `null`
in case of missing property (2.x compatibility)
(^^^ REVERT #3601)
(reported by @wendigo)
#5340: `DeserializationFeature.ACCEPT_FLOAT_AS_INT` not respected for byte/short
when deserializing from JsonNode
(reported by @Artur)
#5344: "Unexpected end-of-input" for `JsonParser.readValueAs()` (in 3.0)
(reported by Phil C)
#5354: jackson-databind 3.0.0 renders `callbacks` property from Spring CGLIB Proxy
(reported, fix contributed by Rob W)
3.0.0 (03-Oct-2025)
#5319: `TreeTraversingParser` does not respect `DeserializationFeature.ACCEPT_FLOAT_AS_INT`
(reported by @Artur)
#5323: `UUID` serialization is broken in v3.0.0-rc9
(reported by Dónal M)
3.0.0-rc10 (19-Sep-2025)
#5272: Replace `ObjectMapper.getRegisteredModuleIds()` (2.x) with
`ObjectMapper.registeredModules()` (3.0)
#5302: Add one more parameter for `AnnotationIntrospector.findPreferredCreator()` method
#5309: Confusing exception for `DoubleNode` to `Integer` conversion in Jackson 3
(reported by @caalador)
(fixed by Joo-Hyuk K)
#5314: Add `MapperFeature.DETECT_PARAMETER_NAMES` to allow disabling `parameter-names`
functionality
(fixed by Joo-Hyuk K)
#5318: Allow auto-detection of Properties-based Constructor even if class has
no-parameters (default) Constructor
3.0.0-rc9 (05-Sep-2025)
#4310: `ParameterNamesModule` causes `@ConstructorProperties` to be ignored,
constructor called with null value
(reported by Lars B)
#5244: Support accessing annotations via `AnnotatedMember.annotations()`
(requested by David N)
#5263: Remove deprecated `URL`-taking `readValue()` methods in `ObjectMapper`,
`ObjectReader` from 3.0
#5270: Remove `ObjectMapper.setSerializationInclusion()` from 3.0 (deprecate in 2.20)
#5287: Change JsonNode.stringValue() of NullNode to return null, not fail (3.0)
3.0.0-rc8 (13-Aug-2025)
No changes since 3.0.0-rc7
3.0.0-rc7 (08-Aug-2025)
#5231: Deserialization through setter with `vararg` parameter fails `ClassCastException`
(reported by @tsegall)
(contributed by Joo-Hyuk K)
3.0.0-rc6 (18-Jul-2025)
#5225: `NullPointerException` in `ObjectMapper.valueToTree(UUID)`
(reported by @ kiryong-lee)
3.0.0-rc5 (22-May-2025)
#4907: Reduce/eliminate introspection on `java.*` classes
(requested by Guillaume S)
#5158: Add "optional" variants -- shortValueOpt(), floatValueOpt(), asShortOpt(),
asFloatOpt()
(contributed by Yu Han)
#5169: Add missing methods in `Serializers` for Enum and TreeNode types (3.0)
3.0.0-rc4 (10-May-2025)
#1484: Changed default of `MapperFeature.DEFAULT_VIEW_INCLUSION` to `false` in 3.0
#2083: Replace Reflection usage with `MethodHandle` (3.0)
(contributed by Steven S)
#5078: Create proper `MonthDeserializer` and `MonthSerializer` (don't rely
on `EnumDeserializer`/`EnumSerializer`)
(fixed by Joo-Hyuk K)
#5093: Change the way `BeanDescription` passed during serializer construction
to use `Supplier`
#5094: Change the way `BeanDescription` passed during deserializer construction
to use `Supplier`
#5110: Add missing `ObjectMapper#createNonBlockingByteBufferParser()` method
(requested by Sébastien D)
#5111: Improve support for deserializing from `TokenBuffer` (f.ex for
content buffered for non-blocking parsing)
(requested by Sébastien D)
#5112: Add a `MapperBuilder#findAndAddModules(ClassLoader)` variant
(requested by Sébastien D)
#5138: add `asShort()`, `asFloat()` conversion methods
(contributed by Yu Han)
#5153: Improve error handling for numeric values in `POJONode`
(contributed by Yu Han)
3.0.0-rc3 (13-Apr-2025)
#4603: Keep full stacktrace when re-throwing exception with
`DatabindException` during deserialization
(fixed by Joo-Hyuk K)
#5032: Move `jackson-datatype-jsr310` module into `jackson-databind` and
rename `JavaTimeFeature` from `jackson-datatype-jsr310` module as `DateTimeFeature`
(implemented by @pjfanning)
#5065: Change default for `DateTimeFeature.ONE_BASED_MONTHS` to `true` in 3.0
#5066: Move date/time `SerializationFeature`s into `DateTimeFeature` (3.0)
#5067: Move date/time `DeserializationFeature`s into `DateTimeFeature` (3.0)
#5079: Move Enum-related DeserializationFeatures into EnumFeature (3.0)
(contributed by Joo-Hyuk K)
#5080: Move Enum-related SerializationFeatures into EnumFeature (3.0)
(contributed by Joo-Hyuk K)
- Branch rename "master" -> "3.x" [JSTEP-12]
3.0.0-rc2 (28-Mar-2025)
#2882: Tighten accessor naming rules to not allow leading lower-case or
non-letter character for getters/setters
#5003: Extend, improve set of `JsonNode.asXxx()` methods for number types
#5025: Add support for automatic detection of subtypes (like `@JsonSubTypes`)
from Java 17 sealed types
(contributed by Andy B)
#5034: Extend, improve set of `JsonNode.asXxx()` methods for non-number
types (Boolean, String)
3.0.0-rc1 (07-Mar-2025)
#493: Change `DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES` default to `false`
(contributed by Joo-Hyuk K)
#1058: Add a way to pass std and format-specific parser/generator flags during
parser/generation construction
#1600: Serializing locale with underscore, not standard hyphen
(requested by Alexander K)
#1762: `StdDateFormat`: serialize time offset using colon
#1772: Remove `MapperFeature. USE_STD_BEAN_NAMING`
#1773: Remove `MapperFeature.AUTO_DETECT_xxx` features
#1774: Merge Java8 datatype (`Optional`, `Stream`) support (`jackson-datatype-jdk8`)
#1775: Merge Java8 parameter name support (`jackson-module-parameter-names`)
#1781: Return `ObjectNode` from `ObjectNode` set-methods in order to allow better chaining
(reported by timo-schmid@github)
#1789: Add `createGenerator` methods in `ObjectMapper`, `ObjectWriter`
#1790: Add `createParser` methods in `ObjectMapper`, `ObjectReader`
#1829: `JsonNode.deepCopy() `ClassCastException`s
(reported by @D3v01dZA)
#1883: Add "abstract type mapping" for deserialization from `Map<ENUMTYPE,V>`
into `EnumMap` (and `Set<ENUMTYPE>` to `EnumSet<EnumType>`)
#1888: Merge `ResolvableSerializer` into `JsonSerializer`, `ResolvableDeserializer`
into `JsonDeserializer`
#1889: Merge `ContextualSerializer` into `JsonSerializer`, `ContextualDeserializer`
into `JsonDeserializer`
#1916: Change `MapperFeature.USE_GETTERS_AS_SETTERS)` default to `false`
#1917: Remove `canSerialize` and `canDeserialize` methods from `ObjectMapper`
#1954: Add Builder pattern for creating configured `ObjectMapper` instances
#1955: Change the way `Module`s configure, interact with `ObjectMapper`
#1973: Remove support for "default [Map] key serializer" configuration from
`SerializerProvider`
#1994: Limit size of `SerializerCache`, auto-flush on exceeding
#1995: Limit size of `DeserializerCache`, auto-flush on exceeding
#2013: Allow use of `java.nio.file.Path` for `readValue()`, `writeValue()`
(requested by XakepSDK@github; contributed by Sven D)
#2040: Remove `JsonSerializer.isEmpty()` from 3.0
#2176: Add `JsonMapper.shared()` static method
#2177: Change parent type of `JsonProcessingException` to be `RuntimeException`
#2382: Support `AutoCloseable` with `SerializationFeature.CLOSE_CLOSEABLE`
(requested by @Logic-32)
#2405: Make `java.sql.Date` serializer default to same output as `java.util.Date`
#2411: Allow `valueToTree()` via `SerializationContext`, add to `ObjectWriter`
(requested by XakepSDK@github)
#2539: Add `Deserializers.hasDeserializerFor()` (and something for `DeserializerFactory`)
to allow detection of explicitly supported types
#2593: StackTraceElement w/ >= Java 9 doesn't deserialize properly
(requested by Michael D)
#2713: Change wording of `UnrecognizedPropertyException` to refer to "property" not "field"
#2828: Add `DatabindException` as intermediate subtype of `JsonMappingException`
#3028: Change `UUIDSerializer` to use `StreamWriteCapability` check instead of
`JsonGenerator.canWriteBinaryNatively()`
#3037: Rename `Module` as `JacksonModule` in 3.0 (to avoid overlap with `java.lang.Module`)
#3043: Rename `SerializerProvider` as `SerializationContext`
#3044: Rename `JsonDeserializer`/`JsonSerializer` as `ValueDeserializer`/`ValueSerializer`
#3046: Rename `JsonSerializable` as `JacksonSerializable`
#3047: Rename `Bean[De]SerializerModifier` as `Value[De]SerializerModifier`
#3070: Change default for `SerializationFeature.FAIL_ON_EMPTY_BEANS` to `false`
#3406: Change default of `DeserializationFeature.FAIL_ON_TRAILING_TOKENS` to `true`
(suggested by @yawkat)
#3522: Support serializing `ByteArrayOutputStream` as "simple" Binary value
#3536: Create new exception type `JsonNodeException` for use by `JsonNode`-related problems
#3542: Rename "com.fasterxml.jackson" -> "tools.jackson"
#3561: Add `DeserializationContext` as an argument for `SettableBeanProperty.set(...)`
(REVERTED in 3.0.1) #3601: Change `Optional` deserialization from "absent"
value into `null`, from "empty"
#4160: Deprecate `DefaultTyping.EVERYTHING` in `2.x` and remove in `3.0`
#4381: Prevent construction of `null`-valued `JsonNode`s (like `TextNode`)
#4552: Change `MapperFeature.ALLOW_FINAL_FIELDS_AS_MUTATORS` default to `false`
#4566: Enable `DeserializationFeature.READ_ENUMS_USING_TO_STRING` by default
(contributed by Joo-Hyuk K)
#4567: Enable `SerializationFeature.WRITE_ENUMS_USING_TO_STRING` by default
(contributed by Joo-Hyuk K)
#4572: Change `MapperFeature.SORT_PROPERTIES_ALPHABETICALLY` default to true
(contributed by Joo-Hyuk K)
#4589: Remove `MapperFeature.SORT_CREATOR_PROPERTIES_BY_DECLARATION_ORDER` from 3.0;
make logic default
#4659: Remove use of global static `TypeFactory` singleton from 3.0
#4664: Change `EnumNamingStrategy.convertEnumToExternalName()` to take `MapperConfig` argument-
(contributed by Joo-Hyuk K)
#4818: Rename `AnnotationIntrospector.findDefaultCreator()` as `findPreferredCreator()`
#4820: Change JDK baseline for Jackson 3.0 from Java 8 to Java 17
#4835: Remove dynamic work-arounds wrt accessing `Record` definition
#4840: Increase minimum Android SDK required to 34 for Jackson 3.0
#4845: Change default of `DateTimeFeature.WRITE_DURATIONS_AS_TIMESTAMPSATES_AS_TIMESTAMPS`
to `false` in 3.0
#4846: Change default of `DateTimeFeature.WRITE_DURATIONS_AS_TIMESTAMPS`
to `false` in 3.0
#4858: Change default of `DeserializationFeature.FAIL_ON_NULL_FOR_PRIMITIVES`
to `true` for 3.0
#4875: Remove `JsonNode.fields()` from 3.0
#4879: Rename `TextNode` as `StringNode`; `JsonNode.xxxTextYyy()` (mostly) as
`JsonNode.xxxStringYyy()` [JSTEP-3]
#4891: Change 3.0 to use `module-info.java` directly for build (instead of via Moditect)
#4956: Rename `JsonNode.isContainerNode()` as `isContainerNode()`
#4958: Extend, improve set of number value accessors for `JsonNode`
(`JsonNode.intValue()` etc) [JSTEP-3]
#4991: Extend, improve set of non-number scalar value accessors for `JsonNode`
(`JsonNode.booleanValue()` etc) [JSTEP-3]
#4992: Rename `JsonNodeFactory.textNode()` as `JsonNodeFactory.stringNode()` [JSTEP-3]
#5004: Add `JsonMapper.builderWithJackson2Defaults()`
(fixed by @pjfanning)
- Remove `MappingJsonFactory`
- Add context parameter for `TypeSerializer` contextualization (`forProperty()`)
- Default for `JsonNodeFeature.STRIP_TRAILING_BIGDECIMAL_ZEROES` changed to `false` for 3.0