Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
kengao2018
fastjson
提交
2bd96e9f
fastjson
项目概览
kengao2018
/
fastjson
与 Fork 源项目一致
从无法访问的项目Fork
通知
7
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
fastjson
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
2bd96e9f
编写于
4月 11, 2019
作者:
S
shaojin.wensj
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
improved large object deserialize performance
上级
604f38f0
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
36 addition
and
8 deletion
+36
-8
src/main/java/com/alibaba/fastjson/parser/deserializer/JavaBeanDeserializer.java
...ba/fastjson/parser/deserializer/JavaBeanDeserializer.java
+36
-8
未找到文件。
src/main/java/com/alibaba/fastjson/parser/deserializer/JavaBeanDeserializer.java
浏览文件 @
2bd96e9f
...
...
@@ -32,6 +32,7 @@ public class JavaBeanDeserializer implements ObjectDeserializer {
private
ConcurrentMap
<
String
,
Object
>
extraFieldDeserializers
;
private
final
Map
<
String
,
FieldDeserializer
>
alterNameFieldDeserializers
;
private
Map
<
String
,
FieldDeserializer
>
fieldDeserializerMap
;
private
transient
long
[]
smartMatchHashArray
;
private
transient
short
[]
smartMatchHashArrayMapping
;
...
...
@@ -61,6 +62,13 @@ public class JavaBeanDeserializer implements ObjectDeserializer {
sortedFieldDeserializers
[
i
]
=
fieldDeserializer
;
if
(
size
>
128
)
{
if
(
fieldDeserializerMap
==
null
)
{
fieldDeserializerMap
=
new
HashMap
<
String
,
FieldDeserializer
>();
}
fieldDeserializerMap
.
put
(
fieldInfo
.
name
,
fieldDeserializer
);
}
for
(
String
name
:
fieldInfo
.
alternateNames
)
{
if
(
alterNameFieldDeserializers
==
null
)
{
alterNameFieldDeserializers
=
new
HashMap
<
String
,
FieldDeserializer
>();
...
...
@@ -86,6 +94,13 @@ public class JavaBeanDeserializer implements ObjectDeserializer {
if
(
key
==
null
)
{
return
null
;
}
if
(
fieldDeserializerMap
!=
null
)
{
FieldDeserializer
fieldDeserializer
=
fieldDeserializerMap
.
get
(
key
);
if
(
fieldDeserializer
!=
null
)
{
return
fieldDeserializer
;
}
}
int
low
=
0
;
int
high
=
sortedFieldDeserializers
.
length
-
1
;
...
...
@@ -479,14 +494,14 @@ public class JavaBeanDeserializer implements ObjectDeserializer {
}
String
typeKey
=
beanInfo
.
typeKey
;
for
(
int
fieldIndex
=
0
;;
fieldIndex
++)
{
for
(
int
fieldIndex
=
0
,
notMatchCount
=
0
;;
fieldIndex
++)
{
String
key
=
null
;
FieldDeserializer
fieldDeser
=
null
;
FieldInfo
fieldInfo
=
null
;
Class
<?>
fieldClass
=
null
;
JSONField
feildAnnotation
=
null
;
boolean
customDeserilizer
=
false
;
if
(
fieldIndex
<
sortedFieldDeserializers
.
length
)
{
if
(
fieldIndex
<
sortedFieldDeserializers
.
length
&&
notMatchCount
<
16
)
{
fieldDeser
=
sortedFieldDeserializers
[
fieldIndex
];
fieldInfo
=
fieldDeser
.
fieldInfo
;
fieldClass
=
fieldInfo
.
fieldClass
;
...
...
@@ -516,7 +531,8 @@ public class JavaBeanDeserializer implements ObjectDeserializer {
matchField
=
true
;
valueParsed
=
true
;
}
else
if
(
lexer
.
matchStat
==
JSONLexer
.
NOT_MATCH_NAME
)
{
continue
;
notMatchCount
++;
continue
;
}
}
else
if
(
fieldClass
==
long
.
class
||
fieldClass
==
Long
.
class
)
{
long
longVal
=
lexer
.
scanFieldLong
(
name_chars
);
...
...
@@ -530,7 +546,8 @@ public class JavaBeanDeserializer implements ObjectDeserializer {
matchField
=
true
;
valueParsed
=
true
;
}
else
if
(
lexer
.
matchStat
==
JSONLexer
.
NOT_MATCH_NAME
)
{
continue
;
notMatchCount
++;
continue
;
}
}
else
if
(
fieldClass
==
String
.
class
)
{
fieldValue
=
lexer
.
scanFieldString
(
name_chars
);
...
...
@@ -539,7 +556,8 @@ public class JavaBeanDeserializer implements ObjectDeserializer {
matchField
=
true
;
valueParsed
=
true
;
}
else
if
(
lexer
.
matchStat
==
JSONLexer
.
NOT_MATCH_NAME
)
{
continue
;
notMatchCount
++;
continue
;
}
}
else
if
(
fieldClass
==
java
.
util
.
Date
.
class
&&
fieldInfo
.
format
==
null
)
{
fieldValue
=
lexer
.
scanFieldDate
(
name_chars
);
...
...
@@ -548,6 +566,7 @@ public class JavaBeanDeserializer implements ObjectDeserializer {
matchField
=
true
;
valueParsed
=
true
;
}
else
if
(
lexer
.
matchStat
==
JSONLexer
.
NOT_MATCH_NAME
)
{
notMatchCount
++;
continue
;
}
}
else
if
(
fieldClass
==
BigDecimal
.
class
)
{
...
...
@@ -557,6 +576,7 @@ public class JavaBeanDeserializer implements ObjectDeserializer {
matchField
=
true
;
valueParsed
=
true
;
}
else
if
(
lexer
.
matchStat
==
JSONLexer
.
NOT_MATCH_NAME
)
{
notMatchCount
++;
continue
;
}
}
else
if
(
fieldClass
==
BigInteger
.
class
)
{
...
...
@@ -566,6 +586,7 @@ public class JavaBeanDeserializer implements ObjectDeserializer {
matchField
=
true
;
valueParsed
=
true
;
}
else
if
(
lexer
.
matchStat
==
JSONLexer
.
NOT_MATCH_NAME
)
{
notMatchCount
++;
continue
;
}
}
else
if
(
fieldClass
==
boolean
.
class
||
fieldClass
==
Boolean
.
class
)
{
...
...
@@ -581,7 +602,8 @@ public class JavaBeanDeserializer implements ObjectDeserializer {
matchField
=
true
;
valueParsed
=
true
;
}
else
if
(
lexer
.
matchStat
==
JSONLexer
.
NOT_MATCH_NAME
)
{
continue
;
notMatchCount
++;
continue
;
}
}
else
if
(
fieldClass
==
float
.
class
||
fieldClass
==
Float
.
class
)
{
float
floatVal
=
lexer
.
scanFieldFloat
(
name_chars
);
...
...
@@ -595,7 +617,8 @@ public class JavaBeanDeserializer implements ObjectDeserializer {
matchField
=
true
;
valueParsed
=
true
;
}
else
if
(
lexer
.
matchStat
==
JSONLexer
.
NOT_MATCH_NAME
)
{
continue
;
notMatchCount
++;
continue
;
}
}
else
if
(
fieldClass
==
double
.
class
||
fieldClass
==
Double
.
class
)
{
double
doubleVal
=
lexer
.
scanFieldDouble
(
name_chars
);
...
...
@@ -609,7 +632,8 @@ public class JavaBeanDeserializer implements ObjectDeserializer {
matchField
=
true
;
valueParsed
=
true
;
}
else
if
(
lexer
.
matchStat
==
JSONLexer
.
NOT_MATCH_NAME
)
{
continue
;
notMatchCount
++;
continue
;
}
}
else
if
(
fieldClass
.
isEnum
()
//
&&
parser
.
getConfig
().
getDeserializer
(
fieldClass
)
instanceof
EnumDeserializer
...
...
@@ -623,6 +647,7 @@ public class JavaBeanDeserializer implements ObjectDeserializer {
matchField
=
true
;
valueParsed
=
true
;
}
else
if
(
lexer
.
matchStat
==
JSONLexer
.
NOT_MATCH_NAME
)
{
notMatchCount
++;
continue
;
}
}
...
...
@@ -633,6 +658,7 @@ public class JavaBeanDeserializer implements ObjectDeserializer {
matchField
=
true
;
valueParsed
=
true
;
}
else
if
(
lexer
.
matchStat
==
JSONLexer
.
NOT_MATCH_NAME
)
{
notMatchCount
++;
continue
;
}
}
else
if
(
fieldClass
==
float
[].
class
)
{
...
...
@@ -642,6 +668,7 @@ public class JavaBeanDeserializer implements ObjectDeserializer {
matchField
=
true
;
valueParsed
=
true
;
}
else
if
(
lexer
.
matchStat
==
JSONLexer
.
NOT_MATCH_NAME
)
{
notMatchCount
++;
continue
;
}
}
else
if
(
fieldClass
==
float
[][].
class
)
{
...
...
@@ -651,6 +678,7 @@ public class JavaBeanDeserializer implements ObjectDeserializer {
matchField
=
true
;
valueParsed
=
true
;
}
else
if
(
lexer
.
matchStat
==
JSONLexer
.
NOT_MATCH_NAME
)
{
notMatchCount
++;
continue
;
}
}
else
if
(
lexer
.
matchField
(
name_chars
))
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录