JavaObjectDeserializer.smali
3.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
.class Lnet/json/fastjson/parser/JavaObjectDeserializer;
.super Ljava/lang/Object;
.source "JavaObjectDeserializer.java"
# interfaces
.implements Lnet/json/fastjson/parser/deserializer/ObjectDeserializer;
# static fields
.field public static final instance:Lnet/json/fastjson/parser/JavaObjectDeserializer;
# direct methods
.method static constructor <clinit>()V
.locals 1
.line 1
new-instance v0, Lnet/json/fastjson/parser/JavaObjectDeserializer;
invoke-direct {v0}, Lnet/json/fastjson/parser/JavaObjectDeserializer;-><init>()V
sput-object v0, Lnet/json/fastjson/parser/JavaObjectDeserializer;->instance:Lnet/json/fastjson/parser/JavaObjectDeserializer;
return-void
.end method
.method constructor <init>()V
.locals 0
.line 1
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
return-void
.end method
# virtual methods
.method public deserialze(Lnet/json/fastjson/parser/DefaultJSONParser;Ljava/lang/reflect/Type;Ljava/lang/Object;)Ljava/lang/Object;
.locals 1
.annotation system Ldalvik/annotation/Signature;
value = {
"<T:",
"Ljava/lang/Object;",
">(",
"Lnet/json/fastjson/parser/DefaultJSONParser;",
"Ljava/lang/reflect/Type;",
"Ljava/lang/Object;",
")TT;"
}
.end annotation
.line 1
instance-of v0, p2, Ljava/lang/reflect/GenericArrayType;
if-eqz v0, :cond_2
.line 2
check-cast p2, Ljava/lang/reflect/GenericArrayType;
invoke-interface {p2}, Ljava/lang/reflect/GenericArrayType;->getGenericComponentType()Ljava/lang/reflect/Type;
move-result-object p2
.line 3
instance-of p3, p2, Ljava/lang/reflect/TypeVariable;
if-eqz p3, :cond_0
.line 4
check-cast p2, Ljava/lang/reflect/TypeVariable;
.line 5
invoke-interface {p2}, Ljava/lang/reflect/TypeVariable;->getBounds()[Ljava/lang/reflect/Type;
move-result-object p2
const/4 p3, 0x0
aget-object p2, p2, p3
.line 8
:cond_0
new-instance p3, Ljava/util/ArrayList;
invoke-direct {p3}, Ljava/util/ArrayList;-><init>()V
.line 9
invoke-virtual {p1, p2, p3}, Lnet/json/fastjson/parser/DefaultJSONParser;->parseArray(Ljava/lang/reflect/Type;Ljava/util/Collection;)V
.line 11
instance-of p1, p2, Ljava/lang/Class;
if-eqz p1, :cond_1
.line 12
check-cast p2, Ljava/lang/Class;
.line 14
invoke-interface {p3}, Ljava/util/List;->size()I
move-result p1
invoke-static {p2, p1}, Ljava/lang/reflect/Array;->newInstance(Ljava/lang/Class;I)Ljava/lang/Object;
move-result-object p1
check-cast p1, [Ljava/lang/Object;
.line 15
invoke-interface {p3, p1}, Ljava/util/List;->toArray([Ljava/lang/Object;)[Ljava/lang/Object;
return-object p1
.line 18
:cond_1
invoke-interface {p3}, Ljava/util/List;->toArray()[Ljava/lang/Object;
move-result-object p1
return-object p1
.line 23
:cond_2
invoke-virtual {p1, p3}, Lnet/json/fastjson/parser/DefaultJSONParser;->parse(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object p1
return-object p1
.end method