@@ -288,7 +288,11 @@ protected Byte _parseByte(JsonParser p, DeserializationContext ctxt)
288
288
// 29-Jun-2020, tatu: New! "Scalar from Object" (mostly for XML)
289
289
case JsonTokenId .ID_START_OBJECT :
290
290
text = ctxt .extractScalarFromObject (p , this , _valueClass );
291
- break ;
291
+ // 17-May-2025, tatu: [databind#4656] need to check for `null`
292
+ if (text != null ) {
293
+ break ;
294
+ }
295
+ // fall through
292
296
default :
293
297
return (Byte ) ctxt .handleUnexpectedToken (getValueType (ctxt ), p );
294
298
}
@@ -369,12 +373,16 @@ protected Short _parseShort(JsonParser p, DeserializationContext ctxt)
369
373
return (Short ) getNullValue (ctxt );
370
374
case JsonTokenId .ID_NUMBER_INT :
371
375
return p .getShortValue ();
376
+ case JsonTokenId .ID_START_ARRAY :
377
+ return (Short )_deserializeFromArray (p , ctxt );
372
378
// 29-Jun-2020, tatu: New! "Scalar from Object" (mostly for XML)
373
379
case JsonTokenId .ID_START_OBJECT :
380
+ // 17-May-2025, tatu: [databind#4656] need to check for `null`
374
381
text = ctxt .extractScalarFromObject (p , this , _valueClass );
375
- break ;
376
- case JsonTokenId .ID_START_ARRAY :
377
- return (Short )_deserializeFromArray (p , ctxt );
382
+ if (text != null ) {
383
+ break ;
384
+ }
385
+ // fall through
378
386
default :
379
387
return (Short ) ctxt .handleUnexpectedToken (getValueType (ctxt ), p );
380
388
}
@@ -457,12 +465,16 @@ public Character deserialize(JsonParser p, DeserializationContext ctxt)
457
465
_verifyNullForPrimitive (ctxt );
458
466
}
459
467
return (Character ) getNullValue (ctxt );
468
+ case JsonTokenId .ID_START_ARRAY :
469
+ return _deserializeFromArray (p , ctxt );
460
470
// 29-Jun-2020, tatu: New! "Scalar from Object" (mostly for XML)
461
471
case JsonTokenId .ID_START_OBJECT :
462
472
text = ctxt .extractScalarFromObject (p , this , _valueClass );
463
- break ;
464
- case JsonTokenId .ID_START_ARRAY :
465
- return _deserializeFromArray (p , ctxt );
473
+ // 17-May-2025, tatu: [databind#4656] need to check for `null`
474
+ if (text != null ) {
475
+ break ;
476
+ }
477
+ // fall through
466
478
default :
467
479
return (Character ) ctxt .handleUnexpectedToken (getValueType (ctxt ), p );
468
480
}
@@ -597,12 +609,16 @@ protected final Float _parseFloat(JsonParser p, DeserializationContext ctxt)
597
609
// fall through to coerce
598
610
case JsonTokenId .ID_NUMBER_FLOAT :
599
611
return p .getFloatValue ();
612
+ case JsonTokenId .ID_START_ARRAY :
613
+ return _deserializeFromArray (p , ctxt );
600
614
// 29-Jun-2020, tatu: New! "Scalar from Object" (mostly for XML)
601
615
case JsonTokenId .ID_START_OBJECT :
602
616
text = ctxt .extractScalarFromObject (p , this , _valueClass );
603
- break ;
604
- case JsonTokenId .ID_START_ARRAY :
605
- return _deserializeFromArray (p , ctxt );
617
+ // 17-May-2025, tatu: [databind#4656] need to check for `null`
618
+ if (text != null ) {
619
+ break ;
620
+ }
621
+ // fall through
606
622
default :
607
623
return (Float ) ctxt .handleUnexpectedToken (getValueType (ctxt ), p );
608
624
}
@@ -696,12 +712,16 @@ protected final Double _parseDouble(JsonParser p, DeserializationContext ctxt) t
696
712
// fall through to coerce
697
713
case JsonTokenId .ID_NUMBER_FLOAT : // safe coercion
698
714
return p .getDoubleValue ();
715
+ case JsonTokenId .ID_START_ARRAY :
716
+ return _deserializeFromArray (p , ctxt );
699
717
// 29-Jun-2020, tatu: New! "Scalar from Object" (mostly for XML)
700
718
case JsonTokenId .ID_START_OBJECT :
701
719
text = ctxt .extractScalarFromObject (p , this , _valueClass );
702
- break ;
703
- case JsonTokenId .ID_START_ARRAY :
704
- return _deserializeFromArray (p , ctxt );
720
+ // 17-May-2025, tatu: [databind#4656] need to check for `null`
721
+ if (text != null ) {
722
+ break ;
723
+ }
724
+ // fall through
705
725
default :
706
726
return (Double ) ctxt .handleUnexpectedToken (getValueType (ctxt ), p );
707
727
}
@@ -788,12 +808,16 @@ public Object deserialize(JsonParser p, DeserializationContext ctxt) throws Jack
788
808
}
789
809
}
790
810
return p .getNumberValue ();
811
+ case JsonTokenId .ID_START_ARRAY :
812
+ return _deserializeFromArray (p , ctxt );
791
813
// 29-Jun-2020, tatu: New! "Scalar from Object" (mostly for XML)
792
814
case JsonTokenId .ID_START_OBJECT :
793
815
text = ctxt .extractScalarFromObject (p , this , _valueClass );
794
- break ;
795
- case JsonTokenId .ID_START_ARRAY :
796
- return _deserializeFromArray (p , ctxt );
816
+ // 17-May-2025, tatu: [databind#4656] need to check for `null`
817
+ if (text != null ) {
818
+ break ;
819
+ }
820
+ // fall through
797
821
default :
798
822
return ctxt .handleUnexpectedToken (getValueType (ctxt ), p );
799
823
}
@@ -922,12 +946,16 @@ public BigInteger deserialize(JsonParser p, DeserializationContext ctxt) throws
922
946
final BigDecimal bd = p .getDecimalValue ();
923
947
p .streamReadConstraints ().validateBigIntegerScale (bd .scale ());
924
948
return bd .toBigInteger ();
949
+ case JsonTokenId .ID_START_ARRAY :
950
+ return _deserializeFromArray (p , ctxt );
925
951
// 29-Jun-2020, tatu: New! "Scalar from Object" (mostly for XML)
926
952
case JsonTokenId .ID_START_OBJECT :
927
953
text = ctxt .extractScalarFromObject (p , this , _valueClass );
928
- break ;
929
- case JsonTokenId .ID_START_ARRAY :
930
- return _deserializeFromArray (p , ctxt );
954
+ // 17-May-2025, tatu: [databind#4656] need to check for `null`
955
+ if (text != null ) {
956
+ break ;
957
+ }
958
+ // fall through
931
959
default :
932
960
// String is ok too, can easily convert; otherwise, no can do:
933
961
return (BigInteger ) ctxt .handleUnexpectedToken (getValueType (ctxt ), p );
@@ -994,12 +1022,16 @@ public BigDecimal deserialize(JsonParser p, DeserializationContext ctxt)
994
1022
case JsonTokenId .ID_STRING :
995
1023
text = p .getString ();
996
1024
break ;
1025
+ case JsonTokenId .ID_START_ARRAY :
1026
+ return _deserializeFromArray (p , ctxt );
997
1027
// 29-Jun-2020, tatu: New! "Scalar from Object" (mostly for XML)
998
1028
case JsonTokenId .ID_START_OBJECT :
999
1029
text = ctxt .extractScalarFromObject (p , this , _valueClass );
1000
- break ;
1001
- case JsonTokenId .ID_START_ARRAY :
1002
- return _deserializeFromArray (p , ctxt );
1030
+ // 17-May-2025, tatu: [databind#4656] need to check for `null`
1031
+ if (text != null ) {
1032
+ break ;
1033
+ }
1034
+ // fall through
1003
1035
default :
1004
1036
return (BigDecimal ) ctxt .handleUnexpectedToken (getValueType (ctxt ), p );
1005
1037
}
0 commit comments