.class public Lcom/alibaba/fastjson/parser/deserializer/NumberDeserializer; .super Ljava/lang/Object; .source "NumberDeserializer.java" # interfaces .implements Lcom/alibaba/fastjson/parser/deserializer/ObjectDeserializer; # static fields .field public static final instance:Lcom/alibaba/fastjson/parser/deserializer/NumberDeserializer; # direct methods .method static constructor ()V .locals 1 .line 13 new-instance v0, Lcom/alibaba/fastjson/parser/deserializer/NumberDeserializer; invoke-direct {v0}, Lcom/alibaba/fastjson/parser/deserializer/NumberDeserializer;->()V sput-object v0, Lcom/alibaba/fastjson/parser/deserializer/NumberDeserializer;->instance:Lcom/alibaba/fastjson/parser/deserializer/NumberDeserializer; return-void .end method .method public constructor ()V .locals 0 .line 11 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; .locals 4 .annotation system Ldalvik/annotation/Signature; value = { "(", "Lcom/alibaba/fastjson/parser/DefaultJSONParser;", "Ljava/lang/reflect/Type;", "Ljava/lang/Object;", ")TT;" } .end annotation .line 17 iget-object p3, p1, Lcom/alibaba/fastjson/parser/DefaultJSONParser;->lexer:Lcom/alibaba/fastjson/parser/JSONLexer; .line 18 invoke-interface {p3}, Lcom/alibaba/fastjson/parser/JSONLexer;->token()I move-result v0 const/16 v1, 0x10 const/4 v2, 0x2 if-ne v0, v2, :cond_7 .line 19 sget-object p1, Ljava/lang/Double;->TYPE:Ljava/lang/Class; if-eq p2, p1, :cond_6 const-class p1, Ljava/lang/Double; if-ne p2, p1, :cond_0 goto :goto_2 .line 25 :cond_0 invoke-interface {p3}, Lcom/alibaba/fastjson/parser/JSONLexer;->longValue()J move-result-wide v2 .line 26 invoke-interface {p3, v1}, Lcom/alibaba/fastjson/parser/JSONLexer;->nextToken(I)V .line 28 sget-object p1, Ljava/lang/Short;->TYPE:Ljava/lang/Class; if-eq p2, p1, :cond_5 const-class p1, Ljava/lang/Short; if-ne p2, p1, :cond_1 goto :goto_1 .line 32 :cond_1 sget-object p1, Ljava/lang/Byte;->TYPE:Ljava/lang/Class; if-eq p2, p1, :cond_4 const-class p1, Ljava/lang/Byte; if-ne p2, p1, :cond_2 goto :goto_0 :cond_2 const-wide/32 p1, -0x80000000 cmp-long p3, v2, p1 if-ltz p3, :cond_3 const-wide/32 p1, 0x7fffffff cmp-long p3, v2, p1 if-gtz p3, :cond_3 long-to-int p1, v2 .line 37 invoke-static {p1}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer; move-result-object p1 return-object p1 .line 39 :cond_3 invoke-static {v2, v3}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long; move-result-object p1 return-object p1 :cond_4 :goto_0 long-to-int p1, v2 int-to-byte p1, p1 .line 33 invoke-static {p1}, Ljava/lang/Byte;->valueOf(B)Ljava/lang/Byte; move-result-object p1 return-object p1 :cond_5 :goto_1 long-to-int p1, v2 int-to-short p1, p1 .line 29 invoke-static {p1}, Ljava/lang/Short;->valueOf(S)Ljava/lang/Short; move-result-object p1 return-object p1 .line 20 :cond_6 :goto_2 invoke-interface {p3}, Lcom/alibaba/fastjson/parser/JSONLexer;->numberString()Ljava/lang/String; move-result-object p1 .line 21 invoke-interface {p3, v1}, Lcom/alibaba/fastjson/parser/JSONLexer;->nextToken(I)V .line 22 invoke-static {p1}, Ljava/lang/Double;->parseDouble(Ljava/lang/String;)D move-result-wide p1 invoke-static {p1, p2}, Ljava/lang/Double;->valueOf(D)Ljava/lang/Double; move-result-object p1 return-object p1 .line 42 :cond_7 invoke-interface {p3}, Lcom/alibaba/fastjson/parser/JSONLexer;->token()I move-result v0 const/4 v2, 0x3 if-ne v0, v2, :cond_e .line 43 sget-object p1, Ljava/lang/Double;->TYPE:Ljava/lang/Class; if-eq p2, p1, :cond_d const-class p1, Ljava/lang/Double; if-ne p2, p1, :cond_8 goto :goto_5 .line 49 :cond_8 invoke-interface {p3}, Lcom/alibaba/fastjson/parser/JSONLexer;->decimalValue()Ljava/math/BigDecimal; move-result-object p1 .line 50 invoke-interface {p3, v1}, Lcom/alibaba/fastjson/parser/JSONLexer;->nextToken(I)V .line 52 sget-object p3, Ljava/lang/Short;->TYPE:Ljava/lang/Class; if-eq p2, p3, :cond_c const-class p3, Ljava/lang/Short; if-ne p2, p3, :cond_9 goto :goto_4 .line 56 :cond_9 sget-object p3, Ljava/lang/Byte;->TYPE:Ljava/lang/Class; if-eq p2, p3, :cond_b const-class p3, Ljava/lang/Byte; if-ne p2, p3, :cond_a goto :goto_3 :cond_a return-object p1 .line 57 :cond_b :goto_3 invoke-virtual {p1}, Ljava/math/BigDecimal;->byteValue()B move-result p1 invoke-static {p1}, Ljava/lang/Byte;->valueOf(B)Ljava/lang/Byte; move-result-object p1 return-object p1 .line 53 :cond_c :goto_4 invoke-virtual {p1}, Ljava/math/BigDecimal;->shortValue()S move-result p1 invoke-static {p1}, Ljava/lang/Short;->valueOf(S)Ljava/lang/Short; move-result-object p1 return-object p1 .line 44 :cond_d :goto_5 invoke-interface {p3}, Lcom/alibaba/fastjson/parser/JSONLexer;->numberString()Ljava/lang/String; move-result-object p1 .line 45 invoke-interface {p3, v1}, Lcom/alibaba/fastjson/parser/JSONLexer;->nextToken(I)V .line 46 invoke-static {p1}, Ljava/lang/Double;->parseDouble(Ljava/lang/String;)D move-result-wide p1 invoke-static {p1, p2}, Ljava/lang/Double;->valueOf(D)Ljava/lang/Double; move-result-object p1 return-object p1 .line 63 :cond_e invoke-virtual {p1}, Lcom/alibaba/fastjson/parser/DefaultJSONParser;->parse()Ljava/lang/Object; move-result-object p1 if-nez p1, :cond_f const/4 p1, 0x0 return-object p1 .line 69 :cond_f sget-object p3, Ljava/lang/Double;->TYPE:Ljava/lang/Class; if-eq p2, p3, :cond_15 const-class p3, Ljava/lang/Double; if-ne p2, p3, :cond_10 goto :goto_8 .line 73 :cond_10 sget-object p3, Ljava/lang/Short;->TYPE:Ljava/lang/Class; if-eq p2, p3, :cond_14 const-class p3, Ljava/lang/Short; if-ne p2, p3, :cond_11 goto :goto_7 .line 77 :cond_11 sget-object p3, Ljava/lang/Byte;->TYPE:Ljava/lang/Class; if-eq p2, p3, :cond_13 const-class p3, Ljava/lang/Byte; if-ne p2, p3, :cond_12 goto :goto_6 .line 81 :cond_12 invoke-static {p1}, Lcom/alibaba/fastjson/util/TypeUtils;->castToBigDecimal(Ljava/lang/Object;)Ljava/math/BigDecimal; move-result-object p1 return-object p1 .line 78 :cond_13 :goto_6 invoke-static {p1}, Lcom/alibaba/fastjson/util/TypeUtils;->castToByte(Ljava/lang/Object;)Ljava/lang/Byte; move-result-object p1 return-object p1 .line 74 :cond_14 :goto_7 invoke-static {p1}, Lcom/alibaba/fastjson/util/TypeUtils;->castToShort(Ljava/lang/Object;)Ljava/lang/Short; move-result-object p1 return-object p1 .line 70 :cond_15 :goto_8 invoke-static {p1}, Lcom/alibaba/fastjson/util/TypeUtils;->castToDouble(Ljava/lang/Object;)Ljava/lang/Double; move-result-object p1 return-object p1 .end method .method public getFastMatchToken()I .locals 1 const/4 v0, 0x2 return v0 .end method