@@ -301,7 +301,11 @@ protected Byte _parseByte(JsonParser p, DeserializationContext ctxt)
301
301
// 29-Jun-2020, tatu: New! "Scalar from Object" (mostly for XML)
302
302
case JsonTokenId .ID_START_OBJECT :
303
303
text = ctxt .extractScalarFromObject (p , this , _valueClass );
304
- break ;
304
+ // 17-May-2025, tatu: [databind#4656] need to check for `null`
305
+ if (text != null ) {
306
+ break ;
307
+ }
308
+ // fall through
305
309
default :
306
310
return (Byte ) ctxt .handleUnexpectedToken (getValueType (ctxt ), p );
307
311
}
@@ -384,12 +388,16 @@ protected Short _parseShort(JsonParser p, DeserializationContext ctxt)
384
388
return (Short ) getNullValue (ctxt );
385
389
case JsonTokenId .ID_NUMBER_INT :
386
390
return p .getShortValue ();
391
+ case JsonTokenId .ID_START_ARRAY :
392
+ return (Short )_deserializeFromArray (p , ctxt );
387
393
// 29-Jun-2020, tatu: New! "Scalar from Object" (mostly for XML)
388
394
case JsonTokenId .ID_START_OBJECT :
395
+ // 17-May-2025, tatu: [databind#4656] need to check for `null`
389
396
text = ctxt .extractScalarFromObject (p , this , _valueClass );
390
- break ;
391
- case JsonTokenId .ID_START_ARRAY :
392
- return (Short )_deserializeFromArray (p , ctxt );
397
+ if (text != null ) {
398
+ break ;
399
+ }
400
+ // fall through
393
401
default :
394
402
return (Short ) ctxt .handleUnexpectedToken (getValueType (ctxt ), p );
395
403
}
@@ -474,12 +482,16 @@ public Character deserialize(JsonParser p, DeserializationContext ctxt)
474
482
_verifyNullForPrimitive (ctxt );
475
483
}
476
484
return (Character ) getNullValue (ctxt );
485
+ case JsonTokenId .ID_START_ARRAY :
486
+ return _deserializeFromArray (p , ctxt );
477
487
// 29-Jun-2020, tatu: New! "Scalar from Object" (mostly for XML)
478
488
case JsonTokenId .ID_START_OBJECT :
479
489
text = ctxt .extractScalarFromObject (p , this , _valueClass );
480
- break ;
481
- case JsonTokenId .ID_START_ARRAY :
482
- return _deserializeFromArray (p , ctxt );
490
+ // 17-May-2025, tatu: [databind#4656] need to check for `null`
491
+ if (text != null ) {
492
+ break ;
493
+ }
494
+ // fall through
483
495
default :
484
496
return (Character ) ctxt .handleUnexpectedToken (getValueType (ctxt ), p );
485
497
}
@@ -622,12 +634,16 @@ protected final Float _parseFloat(JsonParser p, DeserializationContext ctxt)
622
634
// fall through to coerce
623
635
case JsonTokenId .ID_NUMBER_FLOAT :
624
636
return p .getFloatValue ();
637
+ case JsonTokenId .ID_START_ARRAY :
638
+ return _deserializeFromArray (p , ctxt );
625
639
// 29-Jun-2020, tatu: New! "Scalar from Object" (mostly for XML)
626
640
case JsonTokenId .ID_START_OBJECT :
627
641
text = ctxt .extractScalarFromObject (p , this , _valueClass );
628
- break ;
629
- case JsonTokenId .ID_START_ARRAY :
630
- return _deserializeFromArray (p , ctxt );
642
+ // 17-May-2025, tatu: [databind#4656] need to check for `null`
643
+ if (text != null ) {
644
+ break ;
645
+ }
646
+ // fall through
631
647
default :
632
648
return (Float ) ctxt .handleUnexpectedToken (getValueType (ctxt ), p );
633
649
}
@@ -723,12 +739,16 @@ protected final Double _parseDouble(JsonParser p, DeserializationContext ctxt) t
723
739
// fall through to coerce
724
740
case JsonTokenId .ID_NUMBER_FLOAT : // safe coercion
725
741
return p .getDoubleValue ();
742
+ case JsonTokenId .ID_START_ARRAY :
743
+ return _deserializeFromArray (p , ctxt );
726
744
// 29-Jun-2020, tatu: New! "Scalar from Object" (mostly for XML)
727
745
case JsonTokenId .ID_START_OBJECT :
728
746
text = ctxt .extractScalarFromObject (p , this , _valueClass );
729
- break ;
730
- case JsonTokenId .ID_START_ARRAY :
731
- return _deserializeFromArray (p , ctxt );
747
+ // 17-May-2025, tatu: [databind#4656] need to check for `null`
748
+ if (text != null ) {
749
+ break ;
750
+ }
751
+ // fall through
732
752
default :
733
753
return (Double ) ctxt .handleUnexpectedToken (getValueType (ctxt ), p );
734
754
}
@@ -816,12 +836,16 @@ public Object deserialize(JsonParser p, DeserializationContext ctxt) throws IOEx
816
836
}
817
837
}
818
838
return p .getNumberValue ();
839
+ case JsonTokenId .ID_START_ARRAY :
840
+ return _deserializeFromArray (p , ctxt );
819
841
// 29-Jun-2020, tatu: New! "Scalar from Object" (mostly for XML)
820
842
case JsonTokenId .ID_START_OBJECT :
821
843
text = ctxt .extractScalarFromObject (p , this , _valueClass );
822
- break ;
823
- case JsonTokenId .ID_START_ARRAY :
824
- return _deserializeFromArray (p , ctxt );
844
+ // 17-May-2025, tatu: [databind#4656] need to check for `null`
845
+ if (text != null ) {
846
+ break ;
847
+ }
848
+ // fall through
825
849
default :
826
850
return ctxt .handleUnexpectedToken (getValueType (ctxt ), p );
827
851
}
@@ -951,12 +975,16 @@ public BigInteger deserialize(JsonParser p, DeserializationContext ctxt) throws
951
975
final BigDecimal bd = p .getDecimalValue ();
952
976
p .streamReadConstraints ().validateBigIntegerScale (bd .scale ());
953
977
return bd .toBigInteger ();
978
+ case JsonTokenId .ID_START_ARRAY :
979
+ return _deserializeFromArray (p , ctxt );
954
980
// 29-Jun-2020, tatu: New! "Scalar from Object" (mostly for XML)
955
981
case JsonTokenId .ID_START_OBJECT :
956
982
text = ctxt .extractScalarFromObject (p , this , _valueClass );
957
- break ;
958
- case JsonTokenId .ID_START_ARRAY :
959
- return _deserializeFromArray (p , ctxt );
983
+ // 17-May-2025, tatu: [databind#4656] need to check for `null`
984
+ if (text != null ) {
985
+ break ;
986
+ }
987
+ // fall through
960
988
default :
961
989
// String is ok too, can easily convert; otherwise, no can do:
962
990
return (BigInteger ) ctxt .handleUnexpectedToken (getValueType (ctxt ), p );
@@ -1024,12 +1052,16 @@ public BigDecimal deserialize(JsonParser p, DeserializationContext ctxt)
1024
1052
case JsonTokenId .ID_STRING :
1025
1053
text = p .getText ();
1026
1054
break ;
1055
+ case JsonTokenId .ID_START_ARRAY :
1056
+ return _deserializeFromArray (p , ctxt );
1027
1057
// 29-Jun-2020, tatu: New! "Scalar from Object" (mostly for XML)
1028
1058
case JsonTokenId .ID_START_OBJECT :
1029
1059
text = ctxt .extractScalarFromObject (p , this , _valueClass );
1030
- break ;
1031
- case JsonTokenId .ID_START_ARRAY :
1032
- return _deserializeFromArray (p , ctxt );
1060
+ // 17-May-2025, tatu: [databind#4656] need to check for `null`
1061
+ if (text != null ) {
1062
+ break ;
1063
+ }
1064
+ // fall through
1033
1065
default :
1034
1066
return (BigDecimal ) ctxt .handleUnexpectedToken (getValueType (ctxt ), p );
1035
1067
}
0 commit comments