From f164d8519ff061baac6f8d58a5a1b88c2afab00e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=AB=98=E9=93=81?= Date: Sun, 1 Mar 2020 11:55:55 +0800 Subject: [PATCH] 1.2.66 --- src/main/java/com/alibaba/fastjson/JSON.java | 2 +- .../parser/deserializer/MapDeserializer.java | 13 ++++++++++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/alibaba/fastjson/JSON.java b/src/main/java/com/alibaba/fastjson/JSON.java index 9a03bb613..3d077760b 100755 --- a/src/main/java/com/alibaba/fastjson/JSON.java +++ b/src/main/java/com/alibaba/fastjson/JSON.java @@ -1293,5 +1293,5 @@ public abstract class JSON implements JSONStreamAware, JSONAware { return null; } - public final static String VERSION = "1.2.63"; + public final static String VERSION = "1.2.66"; } diff --git a/src/main/java/com/alibaba/fastjson/parser/deserializer/MapDeserializer.java b/src/main/java/com/alibaba/fastjson/parser/deserializer/MapDeserializer.java index 478da42ff..7ecbda2d2 100644 --- a/src/main/java/com/alibaba/fastjson/parser/deserializer/MapDeserializer.java +++ b/src/main/java/com/alibaba/fastjson/parser/deserializer/MapDeserializer.java @@ -292,7 +292,18 @@ public class MapDeserializer implements ObjectDeserializer { lexer.nextToken(keyDeserializer.getFastMatchToken()); } - Object key = keyDeserializer.deserialze(parser, keyType, null); + Object key; + if (lexer.token() == JSONToken.LITERAL_STRING + && keyDeserializer instanceof JavaBeanDeserializer + ) { + String keyStrValue = lexer.stringVal(); + lexer.nextToken(); + DefaultJSONParser keyParser = new DefaultJSONParser(keyStrValue, parser.getConfig(), parser.getLexer().getFeatures()); + keyParser.setDateFormat(parser.getDateFomartPattern()); + key = keyDeserializer.deserialze(keyParser, keyType, null); + } else { + key = keyDeserializer.deserialze(parser, keyType, null); + } if (lexer.token() != JSONToken.COLON) { throw new JSONException("syntax error, expect :, actual " + lexer.token()); -- GitLab