.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 ()V .registers 1 .line 26 new-instance v0, Lcom/alibaba/fastjson/serializer/MiscCodec; invoke-direct {v0}, Lcom/alibaba/fastjson/serializer/MiscCodec;->()V sput-object v0, Lcom/alibaba/fastjson/serializer/MiscCodec;->instance:Lcom/alibaba/fastjson/serializer/MiscCodec; return-void .end method .method private constructor ()V .registers 1 .line 28 invoke-direct {p0}, Ljava/lang/Object;->()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 = { "(", "Lcom/alibaba/fastjson/parser/DefaultJSONParser;", "Ljava/lang/reflect/Type;", "Ljava/lang/Object;", ")TT;" } .end annotation .line 142 const-class p3, Ljava/lang/StackTraceElement; if-ne p2, p3, :cond_9 .line 143 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 146 :cond_9 iget-object p3, p1, Lcom/alibaba/fastjson/parser/DefaultJSONParser;->lexer:Lcom/alibaba/fastjson/parser/JSONLexer; .line 150 iget v0, p1, Lcom/alibaba/fastjson/parser/DefaultJSONParser;->resolveStatus:I const/4 v1, 0x2 const/4 v2, 0x0 if-ne v0, v1, :cond_4b .line 151 iput v2, p1, Lcom/alibaba/fastjson/parser/DefaultJSONParser;->resolveStatus:I const/16 v0, 0x10 .line 152 invoke-virtual {p1, v0}, Lcom/alibaba/fastjson/parser/DefaultJSONParser;->accept(I)V .line 154 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_45 .line 155 const-string v0, "val" invoke-virtual {p3}, Lcom/alibaba/fastjson/parser/JSONLexer;->stringVal()Ljava/lang/String; move-result-object v3 invoke-virtual {v0, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z move-result v0 if-eqz v0, :cond_3f .line 158 invoke-virtual {p3}, Lcom/alibaba/fastjson/parser/JSONLexer;->nextToken()V const/16 p3, 0x11 .line 163 invoke-virtual {p1, p3}, Lcom/alibaba/fastjson/parser/DefaultJSONParser;->accept(I)V .line 165 invoke-virtual {p1}, Lcom/alibaba/fastjson/parser/DefaultJSONParser;->parse()Ljava/lang/Object; move-result-object p3 const/16 v0, 0xd .line 167 invoke-virtual {p1, v0}, Lcom/alibaba/fastjson/parser/DefaultJSONParser;->accept(I)V goto :goto_4f .line 156 :cond_3f new-instance p1, Lcom/alibaba/fastjson/JSONException; invoke-direct {p1, v4}, Lcom/alibaba/fastjson/JSONException;->(Ljava/lang/String;)V throw p1 .line 160 :cond_45 new-instance p1, Lcom/alibaba/fastjson/JSONException; invoke-direct {p1, v4}, Lcom/alibaba/fastjson/JSONException;->(Ljava/lang/String;)V throw p1 .line 169 :cond_4b invoke-virtual {p1}, Lcom/alibaba/fastjson/parser/DefaultJSONParser;->parse()Ljava/lang/Object; move-result-object p3 :goto_4f const/4 v0, 0x0 if-nez p3, :cond_53 return-object v0 .line 177 :cond_53 instance-of v3, p3, Ljava/lang/String; if-eqz v3, :cond_138 .line 178 check-cast p3, Ljava/lang/String; .line 202 invoke-virtual {p3}, Ljava/lang/String;->length()I move-result v3 if-nez v3, :cond_60 return-object v0 .line 206 :cond_60 const-class v3, Ljava/util/UUID; if-ne p2, v3, :cond_69 .line 207 invoke-static {p3}, Ljava/util/UUID;->fromString(Ljava/lang/String;)Ljava/util/UUID; move-result-object p1 return-object p1 .line 208 :cond_69 const-class v3, Ljava/lang/Class; if-ne p2, v3, :cond_76 .line 209 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}, Lcom/alibaba/fastjson/util/TypeUtils;->loadClass(Ljava/lang/String;Ljava/lang/ClassLoader;)Ljava/lang/Class; move-result-object p1 return-object p1 .line 210 :cond_76 const-class v3, Ljava/util/Locale; const/4 v4, 0x1 if-ne p2, v3, :cond_a5 .line 211 const-string p1, "_" invoke-virtual {p3, p1}, Ljava/lang/String;->split(Ljava/lang/String;)[Ljava/lang/String; move-result-object p1 .line 213 array-length p2, p1 if-ne p2, v4, :cond_8c .line 214 new-instance p2, Ljava/util/Locale; aget-object p1, p1, v2 invoke-direct {p2, p1}, Ljava/util/Locale;->(Ljava/lang/String;)V return-object p2 .line 217 :cond_8c array-length p2, p1 if-ne p2, v1, :cond_99 .line 218 new-instance p2, Ljava/util/Locale; aget-object p3, p1, v2 aget-object p1, p1, v4 invoke-direct {p2, p3, p1}, Ljava/util/Locale;->(Ljava/lang/String;Ljava/lang/String;)V return-object p2 .line 221 :cond_99 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;->(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V return-object p2 .line 222 :cond_a5 const-class v1, Ljava/net/URI; if-ne p2, v1, :cond_ae .line 223 invoke-static {p3}, Ljava/net/URI;->create(Ljava/lang/String;)Ljava/net/URI; move-result-object p1 return-object p1 .line 224 :cond_ae const-class v1, Ljava/net/URL; if-ne p2, v1, :cond_c1 .line 226 :try_start_b2 new-instance p1, Ljava/net/URL; invoke-direct {p1, p3}, Ljava/net/URL;->(Ljava/lang/String;)V :try_end_b7 .catch Ljava/net/MalformedURLException; {:try_start_b2 .. :try_end_b7} :catch_b8 return-object p1 :catch_b8 move-exception p1 .line 228 new-instance p2, Lcom/alibaba/fastjson/JSONException; const-string p3, "create url error" invoke-direct {p2, p3, p1}, Lcom/alibaba/fastjson/JSONException;->(Ljava/lang/String;Ljava/lang/Throwable;)V throw p2 .line 230 :cond_c1 const-class v1, Ljava/util/regex/Pattern; if-ne p2, v1, :cond_ca .line 231 invoke-static {p3}, Ljava/util/regex/Pattern;->compile(Ljava/lang/String;)Ljava/util/regex/Pattern; move-result-object p1 return-object p1 .line 232 :cond_ca const-class v1, Ljava/nio/charset/Charset; if-ne p2, v1, :cond_d3 .line 233 invoke-static {p3}, Ljava/nio/charset/Charset;->forName(Ljava/lang/String;)Ljava/nio/charset/Charset; move-result-object p1 return-object p1 .line 234 :cond_d3 const-class v1, Ljava/util/Currency; if-ne p2, v1, :cond_dc .line 235 invoke-static {p3}, Ljava/util/Currency;->getInstance(Ljava/lang/String;)Ljava/util/Currency; move-result-object p1 return-object p1 .line 236 :cond_dc const-class v1, Ljava/text/SimpleDateFormat; if-ne p2, v1, :cond_f1 .line 237 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;->(Ljava/lang/String;Ljava/util/Locale;)V .line 238 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 240 :cond_f1 sget-object p1, Ljava/lang/Character;->TYPE:Ljava/lang/Class; if-eq p2, p1, :cond_133 const-class p1, Ljava/lang/Character; if-ne p2, p1, :cond_fa goto :goto_133 .line 243 :cond_fa instance-of p1, p2, Ljava/lang/Class; if-eqz p1, :cond_12e .line 244 check-cast p2, Ljava/lang/Class; invoke-virtual {p2}, Ljava/lang/Class;->getName()Ljava/lang/String; move-result-object p1 .line 245 const-string p2, "android.net.Uri" invoke-virtual {p2, p1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z move-result p1 if-eqz p1, :cond_12e .line 247 :try_start_10c invoke-static {p2}, Ljava/lang/Class;->forName(Ljava/lang/String;)Ljava/lang/Class; move-result-object p1 .line 248 const-string p2, "parse" 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 249 filled-new-array {p3}, [Ljava/lang/Object; move-result-object p2 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_124 .catch Ljava/lang/Exception; {:try_start_10c .. :try_end_124} :catch_125 return-object p1 :catch_125 move-exception p1 .line 252 new-instance p2, Lcom/alibaba/fastjson/JSONException; const-string p3, "parse android.net.Uri error." invoke-direct {p2, p3, p1}, Lcom/alibaba/fastjson/JSONException;->(Ljava/lang/String;Ljava/lang/Throwable;)V throw p2 .line 257 :cond_12e invoke-static {p3}, Ljava/util/TimeZone;->getTimeZone(Ljava/lang/String;)Ljava/util/TimeZone; move-result-object p1 return-object p1 .line 241 :cond_133 :goto_133 invoke-static {p3}, Lcom/alibaba/fastjson/util/TypeUtils;->castToChar(Ljava/lang/Object;)Ljava/lang/Character; move-result-object p1 return-object p1 .line 180 :cond_138 instance-of p1, p3, Lcom/alibaba/fastjson/JSONObject; if-eqz p1, :cond_16d .line 181 check-cast p3, Lcom/alibaba/fastjson/JSONObject; .line 183 const-class p1, Ljava/util/Currency; if-ne p2, p1, :cond_15c .line 184 const-string p1, "currency" invoke-virtual {p3, p1}, Lcom/alibaba/fastjson/JSONObject;->getString(Ljava/lang/String;)Ljava/lang/String; move-result-object p1 if-eqz p1, :cond_14f .line 186 invoke-static {p1}, Ljava/util/Currency;->getInstance(Ljava/lang/String;)Ljava/util/Currency; move-result-object p1 return-object p1 .line 189 :cond_14f const-string p1, "currencyCode" invoke-virtual {p3, p1}, Lcom/alibaba/fastjson/JSONObject;->getString(Ljava/lang/String;)Ljava/lang/String; move-result-object p1 if-eqz p1, :cond_15c .line 191 invoke-static {p1}, Ljava/util/Currency;->getInstance(Ljava/lang/String;)Ljava/util/Currency; move-result-object p1 return-object p1 .line 195 :cond_15c const-class p1, Ljava/util/Map$Entry; if-ne p2, p1, :cond_16d .line 196 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 199 :cond_16d new-instance p1, Lcom/alibaba/fastjson/JSONException; const-string p2, "except string value" invoke-direct {p1, p2}, Lcom/alibaba/fastjson/JSONException;->(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 = { "(", "Lcom/alibaba/fastjson/parser/DefaultJSONParser;", ")TT;" } .end annotation move-object/from16 v0, p1 .line 263 iget-object v1, v0, Lcom/alibaba/fastjson/parser/DefaultJSONParser;->lexer:Lcom/alibaba/fastjson/parser/JSONLexer; .line 265 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 266 invoke-virtual {v1}, Lcom/alibaba/fastjson/parser/JSONLexer;->nextToken()V return-object v3 .line 270 :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_3f invoke-virtual {v1}, Lcom/alibaba/fastjson/parser/JSONLexer;->token()I move-result v2 if-ne v2, v6, :cond_22 goto :goto_3f .line 271 :cond_22 new-instance v0, Lcom/alibaba/fastjson/JSONException; new-instance v2, Ljava/lang/StringBuilder; const-string v3, "syntax error: " invoke-direct {v2, v3}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V 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; move-result-object v1 invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object v1 invoke-direct {v0, v1}, Lcom/alibaba/fastjson/JSONException;->(Ljava/lang/String;)V throw v0 :cond_3f :goto_3f const/4 v2, 0x0 move v9, v2 move-object v5, v3 move-object v7, v5 move-object v8, v7 .line 281 :cond_44 :goto_44 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_60 .line 284 invoke-virtual {v1}, Lcom/alibaba/fastjson/parser/JSONLexer;->token()I move-result v12 if-ne v12, v11, :cond_59 .line 285 invoke-virtual {v1, v6}, Lcom/alibaba/fastjson/parser/JSONLexer;->nextToken(I)V goto/16 :goto_15d .line 288 :cond_59 invoke-virtual {v1}, Lcom/alibaba/fastjson/parser/JSONLexer;->token()I move-result v12 if-ne v12, v6, :cond_60 goto :goto_44 :cond_60 const/16 v12, 0x3a .line 293 invoke-virtual {v1, v12}, Lcom/alibaba/fastjson/parser/JSONLexer;->nextTokenWithChar(C)V .line 294 const-string v12, "className" 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_8b .line 295 invoke-virtual {v1}, Lcom/alibaba/fastjson/parser/JSONLexer;->token()I move-result v5 if-ne v5, v4, :cond_79 move-object v5, v3 goto/16 :goto_154 .line 297 :cond_79 invoke-virtual {v1}, Lcom/alibaba/fastjson/parser/JSONLexer;->token()I move-result v5 if-ne v5, v13, :cond_85 .line 298 invoke-virtual {v1}, Lcom/alibaba/fastjson/parser/JSONLexer;->stringVal()Ljava/lang/String; move-result-object v5 goto/16 :goto_154 .line 300 :cond_85 new-instance v0, Lcom/alibaba/fastjson/JSONException; invoke-direct {v0, v14}, Lcom/alibaba/fastjson/JSONException;->(Ljava/lang/String;)V throw v0 .line 302 :cond_8b const-string v12, "methodName" invoke-virtual {v12, v10}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z move-result v12 if-eqz v12, :cond_ae .line 303 invoke-virtual {v1}, Lcom/alibaba/fastjson/parser/JSONLexer;->token()I move-result v7 if-ne v7, v4, :cond_9c move-object v7, v3 goto/16 :goto_154 .line 305 :cond_9c invoke-virtual {v1}, Lcom/alibaba/fastjson/parser/JSONLexer;->token()I move-result v7 if-ne v7, v13, :cond_a8 .line 306 invoke-virtual {v1}, Lcom/alibaba/fastjson/parser/JSONLexer;->stringVal()Ljava/lang/String; move-result-object v7 goto/16 :goto_154 .line 308 :cond_a8 new-instance v0, Lcom/alibaba/fastjson/JSONException; invoke-direct {v0, v14}, Lcom/alibaba/fastjson/JSONException;->(Ljava/lang/String;)V throw v0 .line 310 :cond_ae const-string v12, "fileName" invoke-virtual {v12, v10}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z move-result v12 if-eqz v12, :cond_d1 .line 311 invoke-virtual {v1}, Lcom/alibaba/fastjson/parser/JSONLexer;->token()I move-result v8 if-ne v8, v4, :cond_bf move-object v8, v3 goto/16 :goto_154 .line 313 :cond_bf invoke-virtual {v1}, Lcom/alibaba/fastjson/parser/JSONLexer;->token()I move-result v8 if-ne v8, v13, :cond_cb .line 314 invoke-virtual {v1}, Lcom/alibaba/fastjson/parser/JSONLexer;->stringVal()Ljava/lang/String; move-result-object v8 goto/16 :goto_154 .line 316 :cond_cb new-instance v0, Lcom/alibaba/fastjson/JSONException; invoke-direct {v0, v14}, Lcom/alibaba/fastjson/JSONException;->(Ljava/lang/String;)V throw v0 .line 318 :cond_d1 const-string v12, "lineNumber" invoke-virtual {v12, v10}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z move-result v12 if-eqz v12, :cond_f4 .line 319 invoke-virtual {v1}, Lcom/alibaba/fastjson/parser/JSONLexer;->token()I move-result v9 if-ne v9, v4, :cond_e2 move v9, v2 goto/16 :goto_154 .line 321 :cond_e2 invoke-virtual {v1}, Lcom/alibaba/fastjson/parser/JSONLexer;->token()I move-result v9 const/4 v10, 0x2 if-ne v9, v10, :cond_ee .line 322 invoke-virtual {v1}, Lcom/alibaba/fastjson/parser/JSONLexer;->intValue()I move-result v9 goto :goto_154 .line 324 :cond_ee new-instance v0, Lcom/alibaba/fastjson/JSONException; invoke-direct {v0, v14}, Lcom/alibaba/fastjson/JSONException;->(Ljava/lang/String;)V throw v0 .line 326 :cond_f4 const-string v12, "nativeMethod" invoke-virtual {v12, v10}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z move-result v12 if-eqz v12, :cond_122 .line 327 invoke-virtual {v1}, Lcom/alibaba/fastjson/parser/JSONLexer;->token()I move-result v10 if-ne v10, v4, :cond_106 .line 328 invoke-virtual {v1, v6}, Lcom/alibaba/fastjson/parser/JSONLexer;->nextToken(I)V goto :goto_154 .line 329 :cond_106 invoke-virtual {v1}, Lcom/alibaba/fastjson/parser/JSONLexer;->token()I move-result v10 const/4 v12, 0x6 if-ne v10, v12, :cond_111 .line 330 invoke-virtual {v1, v6}, Lcom/alibaba/fastjson/parser/JSONLexer;->nextToken(I)V goto :goto_154 .line 331 :cond_111 invoke-virtual {v1}, Lcom/alibaba/fastjson/parser/JSONLexer;->token()I move-result v10 const/4 v12, 0x7 if-ne v10, v12, :cond_11c .line 332 invoke-virtual {v1, v6}, Lcom/alibaba/fastjson/parser/JSONLexer;->nextToken(I)V goto :goto_154 .line 334 :cond_11c new-instance v0, Lcom/alibaba/fastjson/JSONException; invoke-direct {v0, v14}, Lcom/alibaba/fastjson/JSONException;->(Ljava/lang/String;)V throw v0 .line 336 :cond_122 const-string v12, "@type" const-string v15, "syntax error : " if-ne v10, v12, :cond_169 .line 337 invoke-virtual {v1}, Lcom/alibaba/fastjson/parser/JSONLexer;->token()I move-result v10 if-ne v10, v13, :cond_14e .line 338 invoke-virtual {v1}, Lcom/alibaba/fastjson/parser/JSONLexer;->stringVal()Ljava/lang/String; move-result-object v10 .line 339 const-string v12, "java.lang.StackTraceElement" invoke-virtual {v10, v12}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z move-result v12 if-eqz v12, :cond_13b goto :goto_154 .line 340 :cond_13b new-instance v0, Lcom/alibaba/fastjson/JSONException; new-instance v1, Ljava/lang/StringBuilder; invoke-direct {v1, v15}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V invoke-virtual {v1, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v1 invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object v1 invoke-direct {v0, v1}, Lcom/alibaba/fastjson/JSONException;->(Ljava/lang/String;)V throw v0 .line 343 :cond_14e invoke-virtual {v1}, Lcom/alibaba/fastjson/parser/JSONLexer;->token()I move-result v10 if-ne v10, v4, :cond_163 .line 351 :goto_154 invoke-virtual {v1}, Lcom/alibaba/fastjson/parser/JSONLexer;->token()I move-result v10 if-ne v10, v11, :cond_44 .line 352 invoke-virtual {v1, v6}, Lcom/alibaba/fastjson/parser/JSONLexer;->nextToken(I)V .line 356 :goto_15d new-instance v0, Ljava/lang/StackTraceElement; invoke-direct {v0, v5, v7, v8, v9}, Ljava/lang/StackTraceElement;->(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)V return-object v0 .line 344 :cond_163 new-instance v0, Lcom/alibaba/fastjson/JSONException; invoke-direct {v0, v14}, Lcom/alibaba/fastjson/JSONException;->(Ljava/lang/String;)V throw v0 .line 348 :cond_169 new-instance v0, Lcom/alibaba/fastjson/JSONException; new-instance v1, Ljava/lang/StringBuilder; invoke-direct {v1, v15}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V invoke-virtual {v1, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v1 invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object v1 invoke-direct {v0, v1}, Lcom/alibaba/fastjson/JSONException;->(Ljava/lang/String;)V throw v0 .end method .method public write(Lcom/alibaba/fastjson/serializer/JSONSerializer;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/reflect/Type;)V .registers 12 .annotation system Ldalvik/annotation/Throws; value = { Ljava/io/IOException; } .end annotation .line 33 iget-object v0, p1, Lcom/alibaba/fastjson/serializer/JSONSerializer;->out:Lcom/alibaba/fastjson/serializer/SerializeWriter; if-nez p2, :cond_32 .line 36 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 39 :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 40 invoke-static {p4}, Lcom/alibaba/fastjson/util/TypeUtils;->getClass(Ljava/lang/reflect/Type;)Ljava/lang/Class; move-result-object p1 .line 41 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 .line 42 const-string p1, "[]" invoke-virtual {v0, p1}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->write(Ljava/lang/String;)V return-void .line 46 :cond_28 invoke-virtual {v0}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->writeNull()V goto :goto_31 .line 37 :cond_2c :goto_2c const-string p2, "" invoke-virtual {p1, p2}, Lcom/alibaba/fastjson/serializer/JSONSerializer;->write(Ljava/lang/String;)V :goto_31 return-void .line 51 :cond_32 instance-of v1, p2, Ljava/util/regex/Pattern; if-eqz v1, :cond_41 .line 52 check-cast p2, Ljava/util/regex/Pattern; .line 53 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 54 :cond_41 instance-of v1, p2, Ljava/util/TimeZone; if-eqz v1, :cond_50 .line 55 check-cast p2, Ljava/util/TimeZone; .line 56 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 57 :cond_50 instance-of v1, p2, Ljava/util/Currency; if-eqz v1, :cond_5f .line 58 check-cast p2, Ljava/util/Currency; .line 59 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 60 :cond_5f instance-of v1, p2, Ljava/lang/Class; if-eqz v1, :cond_6e .line 61 check-cast p2, Ljava/lang/Class; .line 62 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 63 :cond_6e instance-of v1, p2, Ljava/lang/Character; if-eqz v1, :cond_8a .line 64 check-cast p2, Ljava/lang/Character; .line 66 invoke-virtual {p2}, Ljava/lang/Character;->charValue()C move-result p3 if-nez p3, :cond_81 .line 68 const-string p2, "\u0000" invoke-virtual {p1, p2}, Lcom/alibaba/fastjson/serializer/JSONSerializer;->write(Ljava/lang/String;)V goto/16 :goto_15d .line 70 :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 72 :cond_8a instance-of v1, p2, Ljava/text/SimpleDateFormat; const/16 v2, 0x2c const/4 v3, 0x0 if-eqz v1, :cond_d2 .line 73 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 75 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_cd .line 76 invoke-virtual {p2}, Ljava/lang/Object;->getClass()Ljava/lang/Class; move-result-object v1 if-eq v1, p4, :cond_cd const/16 p4, 0x7b .line 77 invoke-virtual {v0, p4}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->write(I)V .line 78 const-string p4, "@type" invoke-virtual {v0, p4, v3}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->writeFieldName(Ljava/lang/String;Z)V .line 79 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 80 invoke-virtual {v0, v2}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->write(I)V .line 81 const-string p1, "val" invoke-virtual {v0, p1, v3}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->writeFieldName(Ljava/lang/String;Z)V .line 82 invoke-virtual {v0, p3}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->writeString(Ljava/lang/String;)V const/16 p1, 0x7d .line 83 invoke-virtual {v0, p1}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->write(I)V return-void .line 88 :cond_cd invoke-virtual {v0, p3}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->writeString(Ljava/lang/String;)V goto/16 :goto_15d .line 89 :cond_d2 instance-of v1, p2, Lcom/alibaba/fastjson/JSONStreamAware; if-eqz v1, :cond_df .line 90 check-cast p2, Lcom/alibaba/fastjson/JSONStreamAware; .line 91 iget-object p1, p1, Lcom/alibaba/fastjson/serializer/JSONSerializer;->out:Lcom/alibaba/fastjson/serializer/SerializeWriter; invoke-interface {p2, p1}, Lcom/alibaba/fastjson/JSONStreamAware;->writeJSONString(Ljava/lang/Appendable;)V goto/16 :goto_15d .line 92 :cond_df instance-of v1, p2, Lcom/alibaba/fastjson/JSONAware; if-eqz v1, :cond_ee .line 93 check-cast p2, Lcom/alibaba/fastjson/JSONAware; .line 94 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 95 :cond_ee instance-of v1, p2, Lcom/alibaba/fastjson/serializer/JSONSerializable; if-eqz v1, :cond_f8 .line 96 check-cast p2, Lcom/alibaba/fastjson/serializer/JSONSerializable; .line 97 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 98 :cond_f8 instance-of v1, p2, Ljava/util/Enumeration; if-eqz v1, :cond_156 .line 100 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_112 .line 101 instance-of v1, p4, Ljava/lang/reflect/ParameterizedType; if-eqz v1, :cond_112 .line 102 check-cast p4, Ljava/lang/reflect/ParameterizedType; .line 103 invoke-interface {p4}, Ljava/lang/reflect/ParameterizedType;->getActualTypeArguments()[Ljava/lang/reflect/Type; move-result-object p4 aget-object p4, p4, v3 goto :goto_113 :cond_112 const/4 p4, 0x0 .line 107 :goto_113 move-object v1, p2 check-cast v1, Ljava/util/Enumeration; .line 109 iget-object v4, p1, Lcom/alibaba/fastjson/serializer/JSONSerializer;->context:Lcom/alibaba/fastjson/serializer/SerialContext; .line 110 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 114 :try_start_11d invoke-virtual {v0, p2}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->write(I)V .line 115 :goto_120 invoke-interface {v1}, Ljava/util/Enumeration;->hasMoreElements()Z move-result p2 if-eqz p2, :cond_14a .line 116 invoke-interface {v1}, Ljava/util/Enumeration;->nextElement()Ljava/lang/Object; move-result-object p2 add-int/lit8 p3, v3, 0x1 if-eqz v3, :cond_131 .line 118 invoke-virtual {v0, v2}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->write(I)V :cond_131 if-nez p2, :cond_137 .line 122 invoke-virtual {v0}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->writeNull()V goto :goto_148 .line 126 :cond_137 invoke-virtual {p2}, Ljava/lang/Object;->getClass()Ljava/lang/Class; move-result-object v5 .line 128 iget-object v6, p1, Lcom/alibaba/fastjson/serializer/JSONSerializer;->config:Lcom/alibaba/fastjson/serializer/SerializeConfig; invoke-virtual {v6, v5}, Lcom/alibaba/fastjson/serializer/SerializeConfig;->get(Ljava/lang/Class;)Lcom/alibaba/fastjson/serializer/ObjectSerializer; move-result-object v5 .line 129 invoke-static {v3}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer; move-result-object v3 invoke-interface {v5, p1, p2, v3, p4}, 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_120 :cond_14a const/16 p2, 0x5d .line 131 invoke-virtual {v0, p2}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->write(I)V :try_end_14f .catchall {:try_start_11d .. :try_end_14f} :catchall_152 .line 133 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; throw p2 .line 136 :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