Skip to content
This repository was archived by the owner on Oct 23, 2024. It is now read-only.

Commit 35db4ad

Browse files
committed
bug fix for autoType
1 parent 3f009e1 commit 35db4ad

File tree

2 files changed

+41
-3
lines changed

2 files changed

+41
-3
lines changed

src/main/java/com/alibaba/fastjson/parser/ParserConfig.java

+33-1
Original file line numberDiff line numberDiff line change
@@ -208,8 +208,11 @@ public static ParserConfig getGlobalInstance() {
208208
{
209209
denyHashCodes = new long[]{
210210
0x80D0C70BCC2FEA02L,
211+
0x868385095A22725FL,
211212
0x86FC2BF9BEAF7AEFL,
212213
0x87F52A1B07EA33A6L,
214+
0x8872F29FD0B0B7A7L,
215+
0x8BAAEE8F9BF77FA7L,
213216
0x8EADD40CB2A94443L,
214217
0x8F75F9FA0DF03F80L,
215218
0x9172A53F157930AFL,
@@ -222,6 +225,7 @@ public static ParserConfig getGlobalInstance() {
222225
0xAA3DAFFDB10C4937L,
223226
0xAAA9E6B7C1E1C6A7L,
224227
0xAAAA0826487A3737L,
228+
0xAB82562F53E6E48FL,
225229
0xAC6262F52C98AA39L,
226230
0xAD937A449831E8A0L,
227231
0xAE50DA1FAD60A096L,
@@ -232,6 +236,7 @@ public static ParserConfig getGlobalInstance() {
232236
0xB98B6B5396932FE9L,
233237
0xBCDD9DC12766F0CEL,
234238
0xBCE0DEE34E726499L,
239+
0xBE4F13E96A6796D0L,
235240
0xBEBA72FB1CCBA426L,
236241
0xC00BE1DEBAF2808BL,
237242
0xC1086AFAE32E6258L,
@@ -242,6 +247,7 @@ public static ParserConfig getGlobalInstance() {
242247
0xC8D49E5601E661A9L,
243248
0xC8F04B3A28909935L,
244249
0xC963695082FD728EL,
250+
0xCBF29CE484222325L,
245251
0xD1EFCDF4B3316D34L,
246252
0xD54B91CC77B239EDL,
247253
0xD59EE91F0B09EA01L,
@@ -255,11 +261,14 @@ public static ParserConfig getGlobalInstance() {
255261
0xE1919804D5BF468FL,
256262
0xE2EB3AC7E56C467EL,
257263
0xE603D6A51FAD692BL,
264+
0xE704FD19052B2A34L,
258265
0xE9184BE55B1D962AL,
259266
0xE9F20BAD25F60807L,
267+
0xED13653CB45C4BEDL,
260268
0xF2983D099D29B477L,
261269
0xF3702A4A5490B8E8L,
262270
0xF474E44518F26736L,
271+
0xF4D93F4FB3E3D991L,
263272
0xF5D77DCF8E4D71E6L,
264273
0xF6C0340E73A36A69L,
265274
0xF7E96E74DFA58DBCL,
@@ -276,10 +285,12 @@ public static ParserConfig getGlobalInstance() {
276285
0x55CFCA0F2281C07L,
277286
0xA555C74FE3A5155L,
278287
0xB6E292FA5955ADEL,
288+
0xBEF8514D0B79293L,
279289
0xEE6511B66FD5EF0L,
280290
0x100150A253996624L,
281291
0x10B2BDCA849D9B3EL,
282292
0x10DBC48446E0DAE5L,
293+
0x119B5B1F10210AFCL,
283294
0x144277B467723158L,
284295
0x14DB2E6FEAD04AF0L,
285296
0x154B6CB22D294CFAL,
@@ -293,6 +304,7 @@ public static ParserConfig getGlobalInstance() {
293304
0x25E962F1C28F71A2L,
294305
0x275D0732B877AF29L,
295306
0x28AC82E44E933606L,
307+
0x2A71CE2CC40A710CL,
296308
0x2AD1CE3A112F015DL,
297309
0x2ADFEFBBFE29D931L,
298310
0x2B3A37467A344CDFL,
@@ -304,17 +316,22 @@ public static ParserConfig getGlobalInstance() {
304316
0x332F0B5369A18310L,
305317
0x339A3E0B6BEEBEE9L,
306318
0x33C64B921F523F2FL,
319+
0x33E7F3E02571B153L,
307320
0x34A81EE78429FDF1L,
321+
0x37317698DCFCE894L,
308322
0x378307CB0111E878L,
309323
0x3826F4B2380C8B9BL,
310324
0x398F942E01920CF0L,
311325
0x3A31412DBB05C7FFL,
326+
0x3A7EE0635EB2BC33L,
312327
0x3ADBA40367F73264L,
313328
0x3B0B51ECBF6DB221L,
329+
0x3BF14094A524F0E2L,
314330
0x42D11A560FC9FBA9L,
315331
0x43320DC9D2AE0892L,
316332
0x440E89208F445FB9L,
317333
0x46C808A4B5841F57L,
334+
0x470FD3A18BB39414L,
318335
0x49312BDAFB0077D9L,
319336
0x4A3797B30328202CL,
320337
0x4BA3E254E758D70DL,
@@ -323,8 +340,10 @@ public static ParserConfig getGlobalInstance() {
323340
0x4DA972745FEB30C1L,
324341
0x4EF08C90FF16C675L,
325342
0x4FD10DDC6D13821FL,
343+
0x521B4F573376DF4AL,
326344
0x527DB6B46CE3BCBCL,
327345
0x535E552D6F9700C1L,
346+
0x54855E265FE1DAD5L,
328347
0x5728504A6D454FFCL,
329348
0x599B5C1213A099ACL,
330349
0x5A5BD85C072E5EFEL,
@@ -336,6 +355,7 @@ public static ParserConfig getGlobalInstance() {
336355
0x5F215622FB630753L,
337356
0x61C5BDD721385107L,
338357
0x62DB241274397C34L,
358+
0x636ECCA2A131B235L,
339359
0x63A220E60A17C7B9L,
340360
0x647AB0224E149EBEL,
341361
0x65F81B84C1D920CDL,
@@ -349,9 +369,13 @@ public static ParserConfig getGlobalInstance() {
349369
0x74B50BB9260E31FFL,
350370
0x75CC60F5871D0FD3L,
351371
0x767A586A5107FEEFL,
372+
0x78E5935826671397L,
373+
0x793ADDDED7A967F5L,
352374
0x7AA7EE3627A19CF3L,
375+
0x7AFA070241B8CC4BL,
353376
0x7ED9311D28BF1A65L,
354-
0x7ED9481D28BF417AL
377+
0x7ED9481D28BF417AL,
378+
0x7EE6C477DA20BBE3L
355379
};
356380

357381
long[] hashCodes = new long[AUTO_TYPE_ACCEPT_LIST.length];
@@ -1445,6 +1469,10 @@ public Class<?> checkAutoType(String typeName, Class<?> expectClass, int feature
14451469
clazz = deserializers.findClass(typeName);
14461470
}
14471471

1472+
if (expectClass == null && clazz != null && Throwable.class.isAssignableFrom(clazz) && !autoTypeSupport) {
1473+
clazz = null;
1474+
}
1475+
14481476
if (clazz == null) {
14491477
clazz = typeMapping.get(typeName);
14501478
}
@@ -1552,6 +1580,10 @@ public Class<?> checkAutoType(String typeName, Class<?> expectClass, int feature
15521580
}
15531581

15541582
if (!autoTypeSupport) {
1583+
if (typeName.endsWith("Exception")) {
1584+
return null;
1585+
}
1586+
15551587
throw new JSONException("autoType is not support. " + typeName);
15561588
}
15571589

src/test/java/com/alibaba/json/bvt/bug/Bug_for_Exception.java

+8-2
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,18 @@
44

55
import com.alibaba.fastjson.JSON;
66

7+
import java.util.Map;
8+
79
public class Bug_for_Exception extends TestCase {
810
public void test_exception() throws Exception {
911
RuntimeException ex = new RuntimeException("e1");
1012
String text = JSON.toJSONString(ex);
1113
System.out.println(text);
12-
13-
RuntimeException ex2 = (RuntimeException) JSON.parse(text);
14+
15+
16+
Object obj = JSON.parse(text);
17+
assertTrue(obj instanceof Map);
18+
19+
RuntimeException ex2 = (RuntimeException) JSON.parseObject(text, Throwable.class);
1420
}
1521
}

0 commit comments

Comments
 (0)