MiscCodec.smali
.class public final Lcom/alibaba/fastjson/serializer/MiscCodec;
.super Ljava/lang/Object;
.source "MiscCodec.java"
# interfaces
.implements Lcom/alibaba/fastjson/serializer/ObjectSerializer;
.implements Lcom/alibaba/fastjson/parser/deserializer/ObjectDeserializer;
# static fields
.field public static final instance:Lcom/alibaba/fastjson/serializer/MiscCodec;
# direct methods
.method static constructor <clinit>()V
.registers 1
.line 1
new-instance v0, Lcom/alibaba/fastjson/serializer/MiscCodec;
invoke-direct {v0}, Lcom/alibaba/fastjson/serializer/MiscCodec;-><init>()V
sput-object v0, Lcom/alibaba/fastjson/serializer/MiscCodec;->instance:Lcom/alibaba/fastjson/serializer/MiscCodec;
return-void
.end method
.method private constructor <init>()V
.registers 1
.line 1
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
return-void
.end method
# virtual methods
.method public deserialze(Lcom/alibaba/fastjson/parser/DefaultJSONParser;Ljava/lang/reflect/Type;Ljava/lang/Object;)Ljava/lang/Object;
.registers 9
.annotation system Ldalvik/annotation/Signature;
value = {
"<T:",
"Ljava/lang/Object;",
">(",
"Lcom/alibaba/fastjson/parser/DefaultJSONParser;",
"Ljava/lang/reflect/Type;",
"Ljava/lang/Object;",
")TT;"
}
.end annotation
.line 1
const-class p3, Ljava/lang/StackTraceElement;
if-ne p2, p3, :cond_9
.line 2
invoke-virtual {p0, p1}, Lcom/alibaba/fastjson/serializer/MiscCodec;->parseStackTraceElement(Lcom/alibaba/fastjson/parser/DefaultJSONParser;)Ljava/lang/Object;
move-result-object p1
return-object p1
.line 3
:cond_9
iget-object p3, p1, Lcom/alibaba/fastjson/parser/DefaultJSONParser;->lexer:Lcom/alibaba/fastjson/parser/JSONLexer;
.line 4
iget v0, p1, Lcom/alibaba/fastjson/parser/DefaultJSONParser;->resolveStatus:I
const/4 v1, 0x2
const/4 v2, 0x0
if-ne v0, v1, :cond_4c
.line 5
iput v2, p1, Lcom/alibaba/fastjson/parser/DefaultJSONParser;->resolveStatus:I
const/16 v0, 0x10
.line 6
invoke-virtual {p1, v0}, Lcom/alibaba/fastjson/parser/DefaultJSONParser;->accept(I)V
.line 7
invoke-virtual {p3}, Lcom/alibaba/fastjson/parser/JSONLexer;->token()I
move-result v0
const/4 v3, 0x4
const-string v4, "syntax error"
if-ne v0, v3, :cond_46
.line 8
invoke-virtual {p3}, Lcom/alibaba/fastjson/parser/JSONLexer;->stringVal()Ljava/lang/String;
move-result-object v0
const-string/jumbo v3, "val"
invoke-virtual {v3, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v0
if-eqz v0, :cond_40
.line 9
invoke-virtual {p3}, Lcom/alibaba/fastjson/parser/JSONLexer;->nextToken()V
const/16 p3, 0x11
.line 10
invoke-virtual {p1, p3}, Lcom/alibaba/fastjson/parser/DefaultJSONParser;->accept(I)V
.line 11
invoke-virtual {p1}, Lcom/alibaba/fastjson/parser/DefaultJSONParser;->parse()Ljava/lang/Object;
move-result-object p3
const/16 v0, 0xd
.line 12
invoke-virtual {p1, v0}, Lcom/alibaba/fastjson/parser/DefaultJSONParser;->accept(I)V
goto :goto_50
.line 13
:cond_40
new-instance p1, Lcom/alibaba/fastjson/JSONException;
invoke-direct {p1, v4}, Lcom/alibaba/fastjson/JSONException;-><init>(Ljava/lang/String;)V
throw p1
.line 14
:cond_46
new-instance p1, Lcom/alibaba/fastjson/JSONException;
invoke-direct {p1, v4}, Lcom/alibaba/fastjson/JSONException;-><init>(Ljava/lang/String;)V
throw p1
.line 15
:cond_4c
invoke-virtual {p1}, Lcom/alibaba/fastjson/parser/DefaultJSONParser;->parse()Ljava/lang/Object;
move-result-object p3
:goto_50
const/4 v0, 0x0
if-nez p3, :cond_54
return-object v0
.line 16
:cond_54
instance-of v3, p3, Ljava/lang/String;
if-eqz v3, :cond_13b
.line 17
check-cast p3, Ljava/lang/String;
.line 18
invoke-virtual {p3}, Ljava/lang/String;->length()I
move-result v3
if-nez v3, :cond_61
return-object v0
.line 19
:cond_61
const-class v3, Ljava/util/UUID;
if-ne p2, v3, :cond_6a
.line 20
invoke-static {p3}, Ljava/util/UUID;->fromString(Ljava/lang/String;)Ljava/util/UUID;
move-result-object p1
return-object p1
.line 21
:cond_6a
const-class v3, Ljava/lang/Class;
if-ne p2, v3, :cond_77
.line 22
iget-object p1, p1, Lcom/alibaba/fastjson/parser/DefaultJSONParser;->config:Lcom/alibaba/fastjson/parser/ParserConfig;
iget-object p1, p1, Lcom/alibaba/fastjson/parser/ParserConfig;->defaultClassLoader:Ljava/lang/ClassLoader;
invoke-static {p3, p1, v2}, Lcom/alibaba/fastjson/util/TypeUtils;->loadClass(Ljava/lang/String;Ljava/lang/ClassLoader;Z)Ljava/lang/Class;
move-result-object p1
return-object p1
.line 23
:cond_77
const-class v3, Ljava/util/Locale;
const/4 v4, 0x1
if-ne p2, v3, :cond_a6
const-string p1, "_"
.line 24
invoke-virtual {p3, p1}, Ljava/lang/String;->split(Ljava/lang/String;)[Ljava/lang/String;
move-result-object p1
.line 25
array-length p2, p1
if-ne p2, v4, :cond_8d
.line 26
new-instance p2, Ljava/util/Locale;
aget-object p1, p1, v2
invoke-direct {p2, p1}, Ljava/util/Locale;-><init>(Ljava/lang/String;)V
return-object p2
.line 27
:cond_8d
array-length p2, p1
if-ne p2, v1, :cond_9a
.line 28
new-instance p2, Ljava/util/Locale;
aget-object p3, p1, v2
aget-object p1, p1, v4
invoke-direct {p2, p3, p1}, Ljava/util/Locale;-><init>(Ljava/lang/String;Ljava/lang/String;)V
return-object p2
.line 29
:cond_9a
new-instance p2, Ljava/util/Locale;
aget-object p3, p1, v2
aget-object v0, p1, v4
aget-object p1, p1, v1
invoke-direct {p2, p3, v0, p1}, Ljava/util/Locale;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
return-object p2
.line 30
:cond_a6
const-class v1, Ljava/net/URI;
if-ne p2, v1, :cond_af
.line 31
invoke-static {p3}, Ljava/net/URI;->create(Ljava/lang/String;)Ljava/net/URI;
move-result-object p1
return-object p1
.line 32
:cond_af
const-class v1, Ljava/net/URL;
if-ne p2, v1, :cond_c2
.line 33
:try_start_b3
new-instance p1, Ljava/net/URL;
invoke-direct {p1, p3}, Ljava/net/URL;-><init>(Ljava/lang/String;)V
:try_end_b8
.catch Ljava/net/MalformedURLException; {:try_start_b3 .. :try_end_b8} :catch_b9
return-object p1
:catch_b9
move-exception p1
.line 34
new-instance p2, Lcom/alibaba/fastjson/JSONException;
const-string p3, "create url error"
invoke-direct {p2, p3, p1}, Lcom/alibaba/fastjson/JSONException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V
throw p2
.line 35
:cond_c2
const-class v1, Ljava/util/regex/Pattern;
if-ne p2, v1, :cond_cb
.line 36
invoke-static {p3}, Ljava/util/regex/Pattern;->compile(Ljava/lang/String;)Ljava/util/regex/Pattern;
move-result-object p1
return-object p1
.line 37
:cond_cb
const-class v1, Ljava/nio/charset/Charset;
if-ne p2, v1, :cond_d4
.line 38
invoke-static {p3}, Ljava/nio/charset/Charset;->forName(Ljava/lang/String;)Ljava/nio/charset/Charset;
move-result-object p1
return-object p1
.line 39
:cond_d4
const-class v1, Ljava/util/Currency;
if-ne p2, v1, :cond_dd
.line 40
invoke-static {p3}, Ljava/util/Currency;->getInstance(Ljava/lang/String;)Ljava/util/Currency;
move-result-object p1
return-object p1
.line 41
:cond_dd
const-class v1, Ljava/text/SimpleDateFormat;
if-ne p2, v1, :cond_f2
.line 42
new-instance p2, Ljava/text/SimpleDateFormat;
iget-object v0, p1, Lcom/alibaba/fastjson/parser/DefaultJSONParser;->lexer:Lcom/alibaba/fastjson/parser/JSONLexer;
iget-object v0, v0, Lcom/alibaba/fastjson/parser/JSONLexer;->locale:Ljava/util/Locale;
invoke-direct {p2, p3, v0}, Ljava/text/SimpleDateFormat;-><init>(Ljava/lang/String;Ljava/util/Locale;)V
.line 43
iget-object p1, p1, Lcom/alibaba/fastjson/parser/DefaultJSONParser;->lexer:Lcom/alibaba/fastjson/parser/JSONLexer;
iget-object p1, p1, Lcom/alibaba/fastjson/parser/JSONLexer;->timeZone:Ljava/util/TimeZone;
invoke-virtual {p2, p1}, Ljava/text/SimpleDateFormat;->setTimeZone(Ljava/util/TimeZone;)V
return-object p2
.line 44
:cond_f2
sget-object p1, Ljava/lang/Character;->TYPE:Ljava/lang/Class;
if-eq p2, p1, :cond_136
const-class p1, Ljava/lang/Character;
if-ne p2, p1, :cond_fb
goto :goto_136
.line 45
:cond_fb
instance-of p1, p2, Ljava/lang/Class;
if-eqz p1, :cond_131
.line 46
check-cast p2, Ljava/lang/Class;
invoke-virtual {p2}, Ljava/lang/Class;->getName()Ljava/lang/String;
move-result-object p1
const-string p2, "android.net.Uri"
.line 47
invoke-virtual {p2, p1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result p1
if-eqz p1, :cond_131
const-string p1, "android.net.Uri"
.line 48
:try_start_10f
invoke-static {p1}, Ljava/lang/Class;->forName(Ljava/lang/String;)Ljava/lang/Class;
move-result-object p1
const-string p2, "parse"
.line 49
new-array v1, v4, [Ljava/lang/Class;
const-class v3, Ljava/lang/String;
aput-object v3, v1, v2
invoke-virtual {p1, p2, v1}, Ljava/lang/Class;->getMethod(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
move-result-object p1
.line 50
new-array p2, v4, [Ljava/lang/Object;
aput-object p3, p2, v2
invoke-virtual {p1, v0, p2}, Ljava/lang/reflect/Method;->invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
move-result-object p1
:try_end_127
.catch Ljava/lang/Exception; {:try_start_10f .. :try_end_127} :catch_128
return-object p1
:catch_128
move-exception p1
.line 51
new-instance p2, Lcom/alibaba/fastjson/JSONException;
const-string p3, "parse android.net.Uri error."
invoke-direct {p2, p3, p1}, Lcom/alibaba/fastjson/JSONException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V
throw p2
.line 52
:cond_131
invoke-static {p3}, Ljava/util/TimeZone;->getTimeZone(Ljava/lang/String;)Ljava/util/TimeZone;
move-result-object p1
return-object p1
.line 53
:cond_136
:goto_136
invoke-static {p3}, Lcom/alibaba/fastjson/util/TypeUtils;->castToChar(Ljava/lang/Object;)Ljava/lang/Character;
move-result-object p1
return-object p1
.line 54
:cond_13b
instance-of p1, p3, Lcom/alibaba/fastjson/JSONObject;
if-eqz p1, :cond_170
.line 55
check-cast p3, Lcom/alibaba/fastjson/JSONObject;
.line 56
const-class p1, Ljava/util/Currency;
if-ne p2, p1, :cond_15f
const-string p1, "currency"
.line 57
invoke-virtual {p3, p1}, Lcom/alibaba/fastjson/JSONObject;->getString(Ljava/lang/String;)Ljava/lang/String;
move-result-object p1
if-eqz p1, :cond_152
.line 58
invoke-static {p1}, Ljava/util/Currency;->getInstance(Ljava/lang/String;)Ljava/util/Currency;
move-result-object p1
return-object p1
:cond_152
const-string p1, "currencyCode"
.line 59
invoke-virtual {p3, p1}, Lcom/alibaba/fastjson/JSONObject;->getString(Ljava/lang/String;)Ljava/lang/String;
move-result-object p1
if-eqz p1, :cond_15f
.line 60
invoke-static {p1}, Ljava/util/Currency;->getInstance(Ljava/lang/String;)Ljava/util/Currency;
move-result-object p1
return-object p1
.line 61
:cond_15f
const-class p1, Ljava/util/Map$Entry;
if-ne p2, p1, :cond_170
.line 62
invoke-virtual {p3}, Lcom/alibaba/fastjson/JSONObject;->entrySet()Ljava/util/Set;
move-result-object p1
invoke-interface {p1}, Ljava/util/Set;->iterator()Ljava/util/Iterator;
move-result-object p1
invoke-interface {p1}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object p1
return-object p1
.line 63
:cond_170
new-instance p1, Lcom/alibaba/fastjson/JSONException;
const-string p2, "except string value"
invoke-direct {p1, p2}, Lcom/alibaba/fastjson/JSONException;-><init>(Ljava/lang/String;)V
throw p1
.end method
.method protected parseStackTraceElement(Lcom/alibaba/fastjson/parser/DefaultJSONParser;)Ljava/lang/Object;
.registers 18
.annotation system Ldalvik/annotation/Signature;
value = {
"<T:",
"Ljava/lang/Object;",
">(",
"Lcom/alibaba/fastjson/parser/DefaultJSONParser;",
")TT;"
}
.end annotation
move-object/from16 v0, p1
.line 1
iget-object v1, v0, Lcom/alibaba/fastjson/parser/DefaultJSONParser;->lexer:Lcom/alibaba/fastjson/parser/JSONLexer;
.line 2
invoke-virtual {v1}, Lcom/alibaba/fastjson/parser/JSONLexer;->token()I
move-result v2
const/4 v3, 0x0
const/16 v4, 0x8
if-ne v2, v4, :cond_11
.line 3
invoke-virtual {v1}, Lcom/alibaba/fastjson/parser/JSONLexer;->nextToken()V
return-object v3
.line 4
:cond_11
invoke-virtual {v1}, Lcom/alibaba/fastjson/parser/JSONLexer;->token()I
move-result v2
const/16 v5, 0xc
const/16 v6, 0x10
if-eq v2, v5, :cond_41
invoke-virtual {v1}, Lcom/alibaba/fastjson/parser/JSONLexer;->token()I
move-result v2
if-ne v2, v6, :cond_22
goto :goto_41
.line 5
:cond_22
new-instance v0, Lcom/alibaba/fastjson/JSONException;
new-instance v2, Ljava/lang/StringBuilder;
invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
const-string v3, "syntax error: "
invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v1}, Lcom/alibaba/fastjson/parser/JSONLexer;->token()I
move-result v1
invoke-static {v1}, Lcom/alibaba/fastjson/parser/JSONToken;->name(I)Ljava/lang/String;
move-result-object v1
invoke-virtual {v2, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
invoke-direct {v0, v1}, Lcom/alibaba/fastjson/JSONException;-><init>(Ljava/lang/String;)V
throw v0
:cond_41
:goto_41
const/4 v2, 0x0
move-object v5, v3
move-object v7, v5
move-object v8, v7
const/4 v9, 0x0
.line 6
:cond_46
:goto_46
iget-object v10, v0, Lcom/alibaba/fastjson/parser/DefaultJSONParser;->symbolTable:Lcom/alibaba/fastjson/parser/SymbolTable;
invoke-virtual {v1, v10}, Lcom/alibaba/fastjson/parser/JSONLexer;->scanSymbol(Lcom/alibaba/fastjson/parser/SymbolTable;)Ljava/lang/String;
move-result-object v10
const/16 v11, 0xd
if-nez v10, :cond_62
.line 7
invoke-virtual {v1}, Lcom/alibaba/fastjson/parser/JSONLexer;->token()I
move-result v12
if-ne v12, v11, :cond_5b
.line 8
invoke-virtual {v1, v6}, Lcom/alibaba/fastjson/parser/JSONLexer;->nextToken(I)V
goto/16 :goto_161
.line 9
:cond_5b
invoke-virtual {v1}, Lcom/alibaba/fastjson/parser/JSONLexer;->token()I
move-result v12
if-ne v12, v6, :cond_62
goto :goto_46
:cond_62
const/16 v12, 0x3a
.line 10
invoke-virtual {v1, v12}, Lcom/alibaba/fastjson/parser/JSONLexer;->nextTokenWithChar(C)V
const-string v12, "className"
.line 11
invoke-virtual {v12, v10}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v12
const/4 v13, 0x4
const-string v14, "syntax error"
if-eqz v12, :cond_8d
.line 12
invoke-virtual {v1}, Lcom/alibaba/fastjson/parser/JSONLexer;->token()I
move-result v5
if-ne v5, v4, :cond_7b
move-object v5, v3
goto/16 :goto_158
.line 13
:cond_7b
invoke-virtual {v1}, Lcom/alibaba/fastjson/parser/JSONLexer;->token()I
move-result v5
if-ne v5, v13, :cond_87
.line 14
invoke-virtual {v1}, Lcom/alibaba/fastjson/parser/JSONLexer;->stringVal()Ljava/lang/String;
move-result-object v5
goto/16 :goto_158
.line 15
:cond_87
new-instance v0, Lcom/alibaba/fastjson/JSONException;
invoke-direct {v0, v14}, Lcom/alibaba/fastjson/JSONException;-><init>(Ljava/lang/String;)V
throw v0
:cond_8d
const-string v12, "methodName"
.line 16
invoke-virtual {v12, v10}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v12
if-eqz v12, :cond_b0
.line 17
invoke-virtual {v1}, Lcom/alibaba/fastjson/parser/JSONLexer;->token()I
move-result v7
if-ne v7, v4, :cond_9e
move-object v7, v3
goto/16 :goto_158
.line 18
:cond_9e
invoke-virtual {v1}, Lcom/alibaba/fastjson/parser/JSONLexer;->token()I
move-result v7
if-ne v7, v13, :cond_aa
.line 19
invoke-virtual {v1}, Lcom/alibaba/fastjson/parser/JSONLexer;->stringVal()Ljava/lang/String;
move-result-object v7
goto/16 :goto_158
.line 20
:cond_aa
new-instance v0, Lcom/alibaba/fastjson/JSONException;
invoke-direct {v0, v14}, Lcom/alibaba/fastjson/JSONException;-><init>(Ljava/lang/String;)V
throw v0
:cond_b0
const-string v12, "fileName"
.line 21
invoke-virtual {v12, v10}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v12
if-eqz v12, :cond_d3
.line 22
invoke-virtual {v1}, Lcom/alibaba/fastjson/parser/JSONLexer;->token()I
move-result v8
if-ne v8, v4, :cond_c1
move-object v8, v3
goto/16 :goto_158
.line 23
:cond_c1
invoke-virtual {v1}, Lcom/alibaba/fastjson/parser/JSONLexer;->token()I
move-result v8
if-ne v8, v13, :cond_cd
.line 24
invoke-virtual {v1}, Lcom/alibaba/fastjson/parser/JSONLexer;->stringVal()Ljava/lang/String;
move-result-object v8
goto/16 :goto_158
.line 25
:cond_cd
new-instance v0, Lcom/alibaba/fastjson/JSONException;
invoke-direct {v0, v14}, Lcom/alibaba/fastjson/JSONException;-><init>(Ljava/lang/String;)V
throw v0
:cond_d3
const-string v12, "lineNumber"
.line 26
invoke-virtual {v12, v10}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v12
if-eqz v12, :cond_f6
.line 27
invoke-virtual {v1}, Lcom/alibaba/fastjson/parser/JSONLexer;->token()I
move-result v9
if-ne v9, v4, :cond_e4
const/4 v9, 0x0
goto/16 :goto_158
.line 28
:cond_e4
invoke-virtual {v1}, Lcom/alibaba/fastjson/parser/JSONLexer;->token()I
move-result v9
const/4 v10, 0x2
if-ne v9, v10, :cond_f0
.line 29
invoke-virtual {v1}, Lcom/alibaba/fastjson/parser/JSONLexer;->intValue()I
move-result v9
goto :goto_158
.line 30
:cond_f0
new-instance v0, Lcom/alibaba/fastjson/JSONException;
invoke-direct {v0, v14}, Lcom/alibaba/fastjson/JSONException;-><init>(Ljava/lang/String;)V
throw v0
:cond_f6
const-string v12, "nativeMethod"
.line 31
invoke-virtual {v12, v10}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v12
if-eqz v12, :cond_124
.line 32
invoke-virtual {v1}, Lcom/alibaba/fastjson/parser/JSONLexer;->token()I
move-result v10
if-ne v10, v4, :cond_108
.line 33
invoke-virtual {v1, v6}, Lcom/alibaba/fastjson/parser/JSONLexer;->nextToken(I)V
goto :goto_158
.line 34
:cond_108
invoke-virtual {v1}, Lcom/alibaba/fastjson/parser/JSONLexer;->token()I
move-result v10
const/4 v12, 0x6
if-ne v10, v12, :cond_113
.line 35
invoke-virtual {v1, v6}, Lcom/alibaba/fastjson/parser/JSONLexer;->nextToken(I)V
goto :goto_158
.line 36
:cond_113
invoke-virtual {v1}, Lcom/alibaba/fastjson/parser/JSONLexer;->token()I
move-result v10
const/4 v12, 0x7
if-ne v10, v12, :cond_11e
.line 37
invoke-virtual {v1, v6}, Lcom/alibaba/fastjson/parser/JSONLexer;->nextToken(I)V
goto :goto_158
.line 38
:cond_11e
new-instance v0, Lcom/alibaba/fastjson/JSONException;
invoke-direct {v0, v14}, Lcom/alibaba/fastjson/JSONException;-><init>(Ljava/lang/String;)V
throw v0
:cond_124
const-string v12, "syntax error : "
const-string v15, "@type"
if-ne v10, v15, :cond_16d
.line 39
invoke-virtual {v1}, Lcom/alibaba/fastjson/parser/JSONLexer;->token()I
move-result v10
if-ne v10, v13, :cond_152
.line 40
invoke-virtual {v1}, Lcom/alibaba/fastjson/parser/JSONLexer;->stringVal()Ljava/lang/String;
move-result-object v10
const-string v13, "java.lang.StackTraceElement"
.line 41
invoke-virtual {v10, v13}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v13
if-eqz v13, :cond_13d
goto :goto_158
.line 42
:cond_13d
new-instance v0, Lcom/alibaba/fastjson/JSONException;
new-instance v1, Ljava/lang/StringBuilder;
invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
invoke-virtual {v1, v12}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v1, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
invoke-direct {v0, v1}, Lcom/alibaba/fastjson/JSONException;-><init>(Ljava/lang/String;)V
throw v0
.line 43
:cond_152
invoke-virtual {v1}, Lcom/alibaba/fastjson/parser/JSONLexer;->token()I
move-result v10
if-ne v10, v4, :cond_167
.line 44
:goto_158
invoke-virtual {v1}, Lcom/alibaba/fastjson/parser/JSONLexer;->token()I
move-result v10
if-ne v10, v11, :cond_46
.line 45
invoke-virtual {v1, v6}, Lcom/alibaba/fastjson/parser/JSONLexer;->nextToken(I)V
.line 46
:goto_161
new-instance v0, Ljava/lang/StackTraceElement;
invoke-direct {v0, v5, v7, v8, v9}, Ljava/lang/StackTraceElement;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)V
return-object v0
.line 47
:cond_167
new-instance v0, Lcom/alibaba/fastjson/JSONException;
invoke-direct {v0, v14}, Lcom/alibaba/fastjson/JSONException;-><init>(Ljava/lang/String;)V
throw v0
.line 48
:cond_16d
new-instance v0, Lcom/alibaba/fastjson/JSONException;
new-instance v1, Ljava/lang/StringBuilder;
invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
invoke-virtual {v1, v12}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v1, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
invoke-direct {v0, v1}, Lcom/alibaba/fastjson/JSONException;-><init>(Ljava/lang/String;)V
goto :goto_183
:goto_182
throw v0
:goto_183
goto :goto_182
.end method
.method public write(Lcom/alibaba/fastjson/serializer/JSONSerializer;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/reflect/Type;)V
.registers 11
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
.line 1
iget-object v0, p1, Lcom/alibaba/fastjson/serializer/JSONSerializer;->out:Lcom/alibaba/fastjson/serializer/SerializeWriter;
if-nez p2, :cond_32
.line 2
sget-object p2, Ljava/lang/Character;->TYPE:Ljava/lang/Class;
if-eq p4, p2, :cond_2c
const-class p2, Ljava/lang/Character;
if-ne p4, p2, :cond_d
goto :goto_2c
.line 3
:cond_d
iget p1, v0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->features:I
sget-object p2, Lcom/alibaba/fastjson/serializer/SerializerFeature;->WriteNullListAsEmpty:Lcom/alibaba/fastjson/serializer/SerializerFeature;
iget p2, p2, Lcom/alibaba/fastjson/serializer/SerializerFeature;->mask:I
and-int/2addr p1, p2
if-eqz p1, :cond_28
.line 4
invoke-static {p4}, Lcom/alibaba/fastjson/util/TypeUtils;->getClass(Ljava/lang/reflect/Type;)Ljava/lang/Class;
move-result-object p1
.line 5
const-class p2, Ljava/util/Enumeration;
invoke-virtual {p2, p1}, Ljava/lang/Class;->isAssignableFrom(Ljava/lang/Class;)Z
move-result p1
if-eqz p1, :cond_28
const-string p1, "[]"
.line 6
invoke-virtual {v0, p1}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->write(Ljava/lang/String;)V
return-void
.line 7
:cond_28
invoke-virtual {v0}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->writeNull()V
goto :goto_31
:cond_2c
:goto_2c
const-string p2, ""
.line 8
invoke-virtual {p1, p2}, Lcom/alibaba/fastjson/serializer/JSONSerializer;->write(Ljava/lang/String;)V
:goto_31
return-void
.line 9
:cond_32
instance-of v1, p2, Ljava/util/regex/Pattern;
if-eqz v1, :cond_41
.line 10
check-cast p2, Ljava/util/regex/Pattern;
.line 11
invoke-virtual {p2}, Ljava/util/regex/Pattern;->pattern()Ljava/lang/String;
move-result-object p2
invoke-virtual {p1, p2}, Lcom/alibaba/fastjson/serializer/JSONSerializer;->write(Ljava/lang/String;)V
goto/16 :goto_15d
.line 12
:cond_41
instance-of v1, p2, Ljava/util/TimeZone;
if-eqz v1, :cond_50
.line 13
check-cast p2, Ljava/util/TimeZone;
.line 14
invoke-virtual {p2}, Ljava/util/TimeZone;->getID()Ljava/lang/String;
move-result-object p2
invoke-virtual {p1, p2}, Lcom/alibaba/fastjson/serializer/JSONSerializer;->write(Ljava/lang/String;)V
goto/16 :goto_15d
.line 15
:cond_50
instance-of v1, p2, Ljava/util/Currency;
if-eqz v1, :cond_5f
.line 16
check-cast p2, Ljava/util/Currency;
.line 17
invoke-virtual {p2}, Ljava/util/Currency;->getCurrencyCode()Ljava/lang/String;
move-result-object p2
invoke-virtual {p1, p2}, Lcom/alibaba/fastjson/serializer/JSONSerializer;->write(Ljava/lang/String;)V
goto/16 :goto_15d
.line 18
:cond_5f
instance-of v1, p2, Ljava/lang/Class;
if-eqz v1, :cond_6e
.line 19
check-cast p2, Ljava/lang/Class;
.line 20
invoke-virtual {p2}, Ljava/lang/Class;->getName()Ljava/lang/String;
move-result-object p2
invoke-virtual {p1, p2}, Lcom/alibaba/fastjson/serializer/JSONSerializer;->write(Ljava/lang/String;)V
goto/16 :goto_15d
.line 21
:cond_6e
instance-of v1, p2, Ljava/lang/Character;
if-eqz v1, :cond_8a
.line 22
check-cast p2, Ljava/lang/Character;
.line 23
invoke-virtual {p2}, Ljava/lang/Character;->charValue()C
move-result p3
if-nez p3, :cond_81
const-string p2, "\u0000"
.line 24
invoke-virtual {p1, p2}, Lcom/alibaba/fastjson/serializer/JSONSerializer;->write(Ljava/lang/String;)V
goto/16 :goto_15d
.line 25
:cond_81
invoke-virtual {p2}, Ljava/lang/Character;->toString()Ljava/lang/String;
move-result-object p2
invoke-virtual {p1, p2}, Lcom/alibaba/fastjson/serializer/JSONSerializer;->write(Ljava/lang/String;)V
goto/16 :goto_15d
.line 26
:cond_8a
instance-of v1, p2, Ljava/text/SimpleDateFormat;
const/16 v2, 0x2c
const/4 v3, 0x0
if-eqz v1, :cond_d3
.line 27
move-object p3, p2
check-cast p3, Ljava/text/SimpleDateFormat;
invoke-virtual {p3}, Ljava/text/SimpleDateFormat;->toPattern()Ljava/lang/String;
move-result-object p3
.line 28
iget v1, v0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->features:I
sget-object v4, Lcom/alibaba/fastjson/serializer/SerializerFeature;->WriteClassName:Lcom/alibaba/fastjson/serializer/SerializerFeature;
iget v4, v4, Lcom/alibaba/fastjson/serializer/SerializerFeature;->mask:I
and-int/2addr v1, v4
if-eqz v1, :cond_ce
.line 29
invoke-virtual {p2}, Ljava/lang/Object;->getClass()Ljava/lang/Class;
move-result-object v1
if-eq v1, p4, :cond_ce
const/16 p4, 0x7b
.line 30
invoke-virtual {v0, p4}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->write(I)V
const-string p4, "@type"
.line 31
invoke-virtual {v0, p4, v3}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->writeFieldName(Ljava/lang/String;Z)V
.line 32
invoke-virtual {p2}, Ljava/lang/Object;->getClass()Ljava/lang/Class;
move-result-object p2
invoke-virtual {p2}, Ljava/lang/Class;->getName()Ljava/lang/String;
move-result-object p2
invoke-virtual {p1, p2}, Lcom/alibaba/fastjson/serializer/JSONSerializer;->write(Ljava/lang/String;)V
.line 33
invoke-virtual {v0, v2}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->write(I)V
const-string/jumbo p1, "val"
.line 34
invoke-virtual {v0, p1, v3}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->writeFieldName(Ljava/lang/String;Z)V
.line 35
invoke-virtual {v0, p3}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->writeString(Ljava/lang/String;)V
const/16 p1, 0x7d
.line 36
invoke-virtual {v0, p1}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->write(I)V
return-void
.line 37
:cond_ce
invoke-virtual {v0, p3}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->writeString(Ljava/lang/String;)V
goto/16 :goto_15d
.line 38
:cond_d3
instance-of v1, p2, Lcom/alibaba/fastjson/JSONStreamAware;
if-eqz v1, :cond_de
.line 39
check-cast p2, Lcom/alibaba/fastjson/JSONStreamAware;
.line 40
invoke-interface {p2, v0}, Lcom/alibaba/fastjson/JSONStreamAware;->writeJSONString(Ljava/lang/Appendable;)V
goto/16 :goto_15d
.line 41
:cond_de
instance-of v1, p2, Lcom/alibaba/fastjson/JSONAware;
if-eqz v1, :cond_ed
.line 42
check-cast p2, Lcom/alibaba/fastjson/JSONAware;
.line 43
invoke-interface {p2}, Lcom/alibaba/fastjson/JSONAware;->toJSONString()Ljava/lang/String;
move-result-object p1
invoke-virtual {v0, p1}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->write(Ljava/lang/String;)V
goto/16 :goto_15d
.line 44
:cond_ed
instance-of v1, p2, Lcom/alibaba/fastjson/serializer/JSONSerializable;
if-eqz v1, :cond_f7
.line 45
check-cast p2, Lcom/alibaba/fastjson/serializer/JSONSerializable;
.line 46
invoke-interface {p2, p1, p3, p4}, Lcom/alibaba/fastjson/serializer/JSONSerializable;->write(Lcom/alibaba/fastjson/serializer/JSONSerializer;Ljava/lang/Object;Ljava/lang/reflect/Type;)V
goto :goto_15d
.line 47
:cond_f7
instance-of v1, p2, Ljava/util/Enumeration;
if-eqz v1, :cond_156
const/4 v1, 0x0
.line 48
iget v4, v0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->features:I
sget-object v5, Lcom/alibaba/fastjson/serializer/SerializerFeature;->WriteClassName:Lcom/alibaba/fastjson/serializer/SerializerFeature;
iget v5, v5, Lcom/alibaba/fastjson/serializer/SerializerFeature;->mask:I
and-int/2addr v4, v5
if-eqz v4, :cond_111
.line 49
instance-of v4, p4, Ljava/lang/reflect/ParameterizedType;
if-eqz v4, :cond_111
.line 50
check-cast p4, Ljava/lang/reflect/ParameterizedType;
.line 51
invoke-interface {p4}, Ljava/lang/reflect/ParameterizedType;->getActualTypeArguments()[Ljava/lang/reflect/Type;
move-result-object p4
aget-object v1, p4, v3
.line 52
:cond_111
move-object p4, p2
check-cast p4, Ljava/util/Enumeration;
.line 53
iget-object v4, p1, Lcom/alibaba/fastjson/serializer/JSONSerializer;->context:Lcom/alibaba/fastjson/serializer/SerialContext;
.line 54
invoke-virtual {p1, v4, p2, p3, v3}, Lcom/alibaba/fastjson/serializer/JSONSerializer;->setContext(Lcom/alibaba/fastjson/serializer/SerialContext;Ljava/lang/Object;Ljava/lang/Object;I)V
const/16 p2, 0x5b
.line 55
:try_start_11b
invoke-virtual {v0, p2}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->write(I)V
.line 56
:goto_11e
invoke-interface {p4}, Ljava/util/Enumeration;->hasMoreElements()Z
move-result p2
if-eqz p2, :cond_14a
.line 57
invoke-interface {p4}, Ljava/util/Enumeration;->nextElement()Ljava/lang/Object;
move-result-object p2
add-int/lit8 p3, v3, 0x1
if-eqz v3, :cond_12f
.line 58
invoke-virtual {v0, v2}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->write(I)V
:cond_12f
if-nez p2, :cond_135
.line 59
invoke-virtual {v0}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->writeNull()V
goto :goto_148
.line 60
:cond_135
invoke-virtual {p2}, Ljava/lang/Object;->getClass()Ljava/lang/Class;
move-result-object v3
.line 61
iget-object v5, p1, Lcom/alibaba/fastjson/serializer/JSONSerializer;->config:Lcom/alibaba/fastjson/serializer/SerializeConfig;
invoke-virtual {v5, v3}, Lcom/alibaba/fastjson/serializer/SerializeConfig;->get(Ljava/lang/Class;)Lcom/alibaba/fastjson/serializer/ObjectSerializer;
move-result-object v3
add-int/lit8 v5, p3, -0x1
.line 62
invoke-static {v5}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
move-result-object v5
invoke-interface {v3, p1, p2, v5, v1}, Lcom/alibaba/fastjson/serializer/ObjectSerializer;->write(Lcom/alibaba/fastjson/serializer/JSONSerializer;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/reflect/Type;)V
:goto_148
move v3, p3
goto :goto_11e
:cond_14a
const/16 p2, 0x5d
.line 63
invoke-virtual {v0, p2}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->write(I)V
:try_end_14f
.catchall {:try_start_11b .. :try_end_14f} :catchall_152
.line 64
iput-object v4, p1, Lcom/alibaba/fastjson/serializer/JSONSerializer;->context:Lcom/alibaba/fastjson/serializer/SerialContext;
goto :goto_15d
:catchall_152
move-exception p2
iput-object v4, p1, Lcom/alibaba/fastjson/serializer/JSONSerializer;->context:Lcom/alibaba/fastjson/serializer/SerialContext;
.line 65
throw p2
.line 66
:cond_156
invoke-virtual {p2}, Ljava/lang/Object;->toString()Ljava/lang/String;
move-result-object p2
invoke-virtual {p1, p2}, Lcom/alibaba/fastjson/serializer/JSONSerializer;->write(Ljava/lang/String;)V
:goto_15d
return-void
.end method