@@ -413,15 +413,15 @@ protected final Collection<Object> handleNonArray(JsonParser p, DeserializationC
413
413
return result ;
414
414
}
415
415
value = _nullProvider .getNullValue (ctxt );
416
- if (value == null ) {
417
- _tryToAddNull (p , ctxt , result );
418
- return result ;
419
- }
420
416
} else if (typeDeser == null ) {
421
417
value = valueDes .deserialize (p , ctxt );
422
418
} else {
423
419
value = valueDes .deserializeWithType (p , ctxt , typeDeser );
424
420
}
421
+ if (value == null ) {
422
+ _tryToAddNull (p , ctxt , result );
423
+ return result ;
424
+ }
425
425
} catch (Exception e ) {
426
426
boolean wrap = ctxt .isEnabled (DeserializationFeature .WRAP_EXCEPTIONS );
427
427
if (!wrap ) {
@@ -464,6 +464,9 @@ protected Collection<Object> _deserializeWithObjectId(JsonParser p, Deserializat
464
464
} else {
465
465
value = valueDes .deserializeWithType (p , ctxt , typeDeser );
466
466
}
467
+ if (value == null && _skipNullValues ) {
468
+ continue ;
469
+ }
467
470
referringAccumulator .add (value );
468
471
} catch (UnresolvedForwardReference reference ) {
469
472
Referring ref = referringAccumulator .handleUnresolvedReference (reference );
@@ -480,14 +483,18 @@ protected Collection<Object> _deserializeWithObjectId(JsonParser p, Deserializat
480
483
}
481
484
482
485
/**
483
- * {@code java.util.TreeSet} does not allow addition of {@code null} values,
484
- * so isolate handling here.
486
+ * {@code java.util.TreeSet} (and possibly other {@link Collection} types) does not
487
+ * allow addition of {@code null} values, so isolate handling here.
485
488
*
486
489
* @since 2.17
487
490
*/
488
491
protected void _tryToAddNull (JsonParser p , DeserializationContext ctxt , Collection <?> set )
489
492
throws IOException
490
493
{
494
+ if (_skipNullValues ) {
495
+ return ;
496
+ }
497
+
491
498
// Ideally we'd have better idea of where nulls are accepted, but first
492
499
// let's just produce something better than NPE:
493
500
try {
0 commit comments