JSONSerializer.smali
.class public Lcom/alibaba/fastjson/serializer/JSONSerializer;
.super Ljava/lang/Object;
.source "JSONSerializer.java"
# instance fields
.field private afterFilters:Ljava/util/List;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/List<",
"Lcom/alibaba/fastjson/serializer/AfterFilter;",
">;"
}
.end annotation
.end field
.field private beforeFilters:Ljava/util/List;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/List<",
"Lcom/alibaba/fastjson/serializer/BeforeFilter;",
">;"
}
.end annotation
.end field
.field private final config:Lcom/alibaba/fastjson/serializer/SerializeConfig;
.field private context:Lcom/alibaba/fastjson/serializer/SerialContext;
.field private dateFormat:Ljava/text/DateFormat;
.field private dateFormatPattern:Ljava/lang/String;
.field private indent:Ljava/lang/String;
.field private indentCount:I
.field private nameFilters:Ljava/util/List;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/List<",
"Lcom/alibaba/fastjson/serializer/NameFilter;",
">;"
}
.end annotation
.end field
.field private final out:Lcom/alibaba/fastjson/serializer/SerializeWriter;
.field private propertyFilters:Ljava/util/List;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/List<",
"Lcom/alibaba/fastjson/serializer/PropertyFilter;",
">;"
}
.end annotation
.end field
.field private propertyPreFilters:Ljava/util/List;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/List<",
"Lcom/alibaba/fastjson/serializer/PropertyPreFilter;",
">;"
}
.end annotation
.end field
.field private references:Ljava/util/IdentityHashMap;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/IdentityHashMap<",
"Ljava/lang/Object;",
"Lcom/alibaba/fastjson/serializer/SerialContext;",
">;"
}
.end annotation
.end field
.field private valueFilters:Ljava/util/List;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/List<",
"Lcom/alibaba/fastjson/serializer/ValueFilter;",
">;"
}
.end annotation
.end field
# direct methods
.method static constructor <clinit>()V
.registers 1
return-void
.end method
.method public constructor <init>()V
.registers 3
.line 65
new-instance v0, Lcom/alibaba/fastjson/serializer/SerializeWriter;
invoke-direct {v0}, Lcom/alibaba/fastjson/serializer/SerializeWriter;-><init>()V
invoke-static {}, Lcom/alibaba/fastjson/serializer/SerializeConfig;->getGlobalInstance()Lcom/alibaba/fastjson/serializer/SerializeConfig;
move-result-object v1
invoke-direct {p0, v0, v1}, Lcom/alibaba/fastjson/serializer/JSONSerializer;-><init>(Lcom/alibaba/fastjson/serializer/SerializeWriter;Lcom/alibaba/fastjson/serializer/SerializeConfig;)V
.line 66
return-void
.end method
.method public constructor <init>(Lcom/alibaba/fastjson/serializer/SerializeConfig;)V
.registers 3
.param p1, "config" # Lcom/alibaba/fastjson/serializer/SerializeConfig;
.line 73
new-instance v0, Lcom/alibaba/fastjson/serializer/SerializeWriter;
invoke-direct {v0}, Lcom/alibaba/fastjson/serializer/SerializeWriter;-><init>()V
invoke-direct {p0, v0, p1}, Lcom/alibaba/fastjson/serializer/JSONSerializer;-><init>(Lcom/alibaba/fastjson/serializer/SerializeWriter;Lcom/alibaba/fastjson/serializer/SerializeConfig;)V
.line 74
return-void
.end method
.method public constructor <init>(Lcom/alibaba/fastjson/serializer/SerializeWriter;)V
.registers 3
.param p1, "out" # Lcom/alibaba/fastjson/serializer/SerializeWriter;
.line 69
invoke-static {}, Lcom/alibaba/fastjson/serializer/SerializeConfig;->getGlobalInstance()Lcom/alibaba/fastjson/serializer/SerializeConfig;
move-result-object v0
invoke-direct {p0, p1, v0}, Lcom/alibaba/fastjson/serializer/JSONSerializer;-><init>(Lcom/alibaba/fastjson/serializer/SerializeWriter;Lcom/alibaba/fastjson/serializer/SerializeConfig;)V
.line 70
return-void
.end method
.method public constructor <init>(Lcom/alibaba/fastjson/serializer/SerializeWriter;Lcom/alibaba/fastjson/serializer/SerializeConfig;)V
.registers 5
.param p1, "out" # Lcom/alibaba/fastjson/serializer/SerializeWriter;
.param p2, "config" # Lcom/alibaba/fastjson/serializer/SerializeConfig;
.line 76
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 48
const/4 v0, 0x0
iput-object v0, p0, Lcom/alibaba/fastjson/serializer/JSONSerializer;->beforeFilters:Ljava/util/List;
.line 49
iput-object v0, p0, Lcom/alibaba/fastjson/serializer/JSONSerializer;->afterFilters:Ljava/util/List;
.line 50
iput-object v0, p0, Lcom/alibaba/fastjson/serializer/JSONSerializer;->propertyFilters:Ljava/util/List;
.line 51
iput-object v0, p0, Lcom/alibaba/fastjson/serializer/JSONSerializer;->valueFilters:Ljava/util/List;
.line 52
iput-object v0, p0, Lcom/alibaba/fastjson/serializer/JSONSerializer;->nameFilters:Ljava/util/List;
.line 53
iput-object v0, p0, Lcom/alibaba/fastjson/serializer/JSONSerializer;->propertyPreFilters:Ljava/util/List;
.line 55
const/4 v1, 0x0
iput v1, p0, Lcom/alibaba/fastjson/serializer/JSONSerializer;->indentCount:I
.line 56
const-string v1, "\t"
iput-object v1, p0, Lcom/alibaba/fastjson/serializer/JSONSerializer;->indent:Ljava/lang/String;
.line 61
iput-object v0, p0, Lcom/alibaba/fastjson/serializer/JSONSerializer;->references:Ljava/util/IdentityHashMap;
.line 77
iput-object p1, p0, Lcom/alibaba/fastjson/serializer/JSONSerializer;->out:Lcom/alibaba/fastjson/serializer/SerializeWriter;
.line 78
iput-object p2, p0, Lcom/alibaba/fastjson/serializer/JSONSerializer;->config:Lcom/alibaba/fastjson/serializer/SerializeConfig;
.line 79
return-void
.end method
.method public static final write(Lcom/alibaba/fastjson/serializer/SerializeWriter;Ljava/lang/Object;)V
.registers 3
.param p0, "out" # Lcom/alibaba/fastjson/serializer/SerializeWriter;
.param p1, "object" # Ljava/lang/Object;
.line 337
new-instance v0, Lcom/alibaba/fastjson/serializer/JSONSerializer;
invoke-direct {v0, p0}, Lcom/alibaba/fastjson/serializer/JSONSerializer;-><init>(Lcom/alibaba/fastjson/serializer/SerializeWriter;)V
.line 338
.local v0, "serializer":Lcom/alibaba/fastjson/serializer/JSONSerializer;
invoke-virtual {v0, p1}, Lcom/alibaba/fastjson/serializer/JSONSerializer;->write(Ljava/lang/Object;)V
.line 339
return-void
.end method
.method public static final write(Ljava/io/Writer;Ljava/lang/Object;)V
.registers 6
.param p0, "out" # Ljava/io/Writer;
.param p1, "object" # Ljava/lang/Object;
.line 324
new-instance v0, Lcom/alibaba/fastjson/serializer/SerializeWriter;
invoke-direct {v0}, Lcom/alibaba/fastjson/serializer/SerializeWriter;-><init>()V
.line 326
.local v0, "writer":Lcom/alibaba/fastjson/serializer/SerializeWriter;
:try_start_5
new-instance v1, Lcom/alibaba/fastjson/serializer/JSONSerializer;
invoke-direct {v1, v0}, Lcom/alibaba/fastjson/serializer/JSONSerializer;-><init>(Lcom/alibaba/fastjson/serializer/SerializeWriter;)V
.line 327
.local v1, "serializer":Lcom/alibaba/fastjson/serializer/JSONSerializer;
invoke-virtual {v1, p1}, Lcom/alibaba/fastjson/serializer/JSONSerializer;->write(Ljava/lang/Object;)V
.line 328
invoke-virtual {v0, p0}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->writeTo(Ljava/io/Writer;)V
:try_end_10
.catch Ljava/io/IOException; {:try_start_5 .. :try_end_10} :catch_17
.catchall {:try_start_5 .. :try_end_10} :catchall_15
.line 332
.end local v1 # "serializer":Lcom/alibaba/fastjson/serializer/JSONSerializer;
invoke-virtual {v0}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->close()V
.line 333
nop
.line 334
return-void
.line 332
:catchall_15
move-exception v1
goto :goto_22
.line 329
:catch_17
move-exception v1
.line 330
.local v1, "ex":Ljava/io/IOException;
:try_start_18
new-instance v2, Lcom/alibaba/fastjson/JSONException;
invoke-virtual {v1}, Ljava/io/IOException;->getMessage()Ljava/lang/String;
move-result-object v3
invoke-direct {v2, v3, v1}, Lcom/alibaba/fastjson/JSONException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V
.end local v0 # "writer":Lcom/alibaba/fastjson/serializer/SerializeWriter;
.end local p0 # "out":Ljava/io/Writer;
.end local p1 # "object":Ljava/lang/Object;
throw v2
:try_end_22
.catchall {:try_start_18 .. :try_end_22} :catchall_15
.line 332
.end local v1 # "ex":Ljava/io/IOException;
.restart local v0 # "writer":Lcom/alibaba/fastjson/serializer/SerializeWriter;
.restart local p0 # "out":Ljava/io/Writer;
.restart local p1 # "object":Ljava/lang/Object;
:goto_22
invoke-virtual {v0}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->close()V
throw v1
.end method
# virtual methods
.method public close()V
.registers 2
.line 472
iget-object v0, p0, Lcom/alibaba/fastjson/serializer/JSONSerializer;->out:Lcom/alibaba/fastjson/serializer/SerializeWriter;
invoke-virtual {v0}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->close()V
.line 473
return-void
.end method
.method public config(Lcom/alibaba/fastjson/serializer/SerializerFeature;Z)V
.registers 4
.param p1, "feature" # Lcom/alibaba/fastjson/serializer/SerializerFeature;
.param p2, "state" # Z
.line 308
iget-object v0, p0, Lcom/alibaba/fastjson/serializer/JSONSerializer;->out:Lcom/alibaba/fastjson/serializer/SerializeWriter;
invoke-virtual {v0, p1, p2}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->config(Lcom/alibaba/fastjson/serializer/SerializerFeature;Z)V
.line 309
return-void
.end method
.method public containsReference(Ljava/lang/Object;)Z
.registers 3
.param p1, "value" # Ljava/lang/Object;
.line 160
iget-object v0, p0, Lcom/alibaba/fastjson/serializer/JSONSerializer;->references:Ljava/util/IdentityHashMap;
if-nez v0, :cond_6
.line 161
const/4 v0, 0x0
return v0
.line 164
:cond_6
invoke-virtual {v0, p1}, Ljava/util/IdentityHashMap;->containsKey(Ljava/lang/Object;)Z
move-result v0
return v0
.end method
.method public decrementIdent()V
.registers 2
.line 229
iget v0, p0, Lcom/alibaba/fastjson/serializer/JSONSerializer;->indentCount:I
add-int/lit8 v0, v0, -0x1
iput v0, p0, Lcom/alibaba/fastjson/serializer/JSONSerializer;->indentCount:I
.line 230
return-void
.end method
.method public getAfterFilters()Ljava/util/List;
.registers 2
.annotation system Ldalvik/annotation/Signature;
value = {
"()",
"Ljava/util/List<",
"Lcom/alibaba/fastjson/serializer/AfterFilter;",
">;"
}
.end annotation
.line 252
iget-object v0, p0, Lcom/alibaba/fastjson/serializer/JSONSerializer;->afterFilters:Ljava/util/List;
if-nez v0, :cond_b
.line 253
new-instance v0, Ljava/util/ArrayList;
invoke-direct {v0}, Ljava/util/ArrayList;-><init>()V
iput-object v0, p0, Lcom/alibaba/fastjson/serializer/JSONSerializer;->afterFilters:Ljava/util/List;
.line 256
:cond_b
iget-object v0, p0, Lcom/alibaba/fastjson/serializer/JSONSerializer;->afterFilters:Ljava/util/List;
return-object v0
.end method
.method public getAfterFiltersDirect()Ljava/util/List;
.registers 2
.annotation system Ldalvik/annotation/Signature;
value = {
"()",
"Ljava/util/List<",
"Lcom/alibaba/fastjson/serializer/AfterFilter;",
">;"
}
.end annotation
.line 260
iget-object v0, p0, Lcom/alibaba/fastjson/serializer/JSONSerializer;->afterFilters:Ljava/util/List;
return-object v0
.end method
.method public getBeforeFilters()Ljava/util/List;
.registers 2
.annotation system Ldalvik/annotation/Signature;
value = {
"()",
"Ljava/util/List<",
"Lcom/alibaba/fastjson/serializer/BeforeFilter;",
">;"
}
.end annotation
.line 240
iget-object v0, p0, Lcom/alibaba/fastjson/serializer/JSONSerializer;->beforeFilters:Ljava/util/List;
if-nez v0, :cond_b
.line 241
new-instance v0, Ljava/util/ArrayList;
invoke-direct {v0}, Ljava/util/ArrayList;-><init>()V
iput-object v0, p0, Lcom/alibaba/fastjson/serializer/JSONSerializer;->beforeFilters:Ljava/util/List;
.line 244
:cond_b
iget-object v0, p0, Lcom/alibaba/fastjson/serializer/JSONSerializer;->beforeFilters:Ljava/util/List;
return-object v0
.end method
.method public getBeforeFiltersDirect()Ljava/util/List;
.registers 2
.annotation system Ldalvik/annotation/Signature;
value = {
"()",
"Ljava/util/List<",
"Lcom/alibaba/fastjson/serializer/BeforeFilter;",
">;"
}
.end annotation
.line 248
iget-object v0, p0, Lcom/alibaba/fastjson/serializer/JSONSerializer;->beforeFilters:Ljava/util/List;
return-object v0
.end method
.method public getContext()Lcom/alibaba/fastjson/serializer/SerialContext;
.registers 2
.line 113
iget-object v0, p0, Lcom/alibaba/fastjson/serializer/JSONSerializer;->context:Lcom/alibaba/fastjson/serializer/SerialContext;
return-object v0
.end method
.method public getDateFormat()Ljava/text/DateFormat;
.registers 3
.line 89
iget-object v0, p0, Lcom/alibaba/fastjson/serializer/JSONSerializer;->dateFormat:Ljava/text/DateFormat;
if-nez v0, :cond_11
.line 90
iget-object v0, p0, Lcom/alibaba/fastjson/serializer/JSONSerializer;->dateFormatPattern:Ljava/lang/String;
if-eqz v0, :cond_11
.line 91
new-instance v0, Ljava/text/SimpleDateFormat;
iget-object v1, p0, Lcom/alibaba/fastjson/serializer/JSONSerializer;->dateFormatPattern:Ljava/lang/String;
invoke-direct {v0, v1}, Ljava/text/SimpleDateFormat;-><init>(Ljava/lang/String;)V
iput-object v0, p0, Lcom/alibaba/fastjson/serializer/JSONSerializer;->dateFormat:Ljava/text/DateFormat;
.line 95
:cond_11
iget-object v0, p0, Lcom/alibaba/fastjson/serializer/JSONSerializer;->dateFormat:Ljava/text/DateFormat;
return-object v0
.end method
.method public getDateFormatPattern()Ljava/lang/String;
.registers 3
.line 82
iget-object v0, p0, Lcom/alibaba/fastjson/serializer/JSONSerializer;->dateFormat:Ljava/text/DateFormat;
instance-of v1, v0, Ljava/text/SimpleDateFormat;
if-eqz v1, :cond_d
.line 83
check-cast v0, Ljava/text/SimpleDateFormat;
invoke-virtual {v0}, Ljava/text/SimpleDateFormat;->toPattern()Ljava/lang/String;
move-result-object v0
return-object v0
.line 85
:cond_d
iget-object v0, p0, Lcom/alibaba/fastjson/serializer/JSONSerializer;->dateFormatPattern:Ljava/lang/String;
return-object v0
.end method
.method public getIndentCount()I
.registers 2
.line 221
iget v0, p0, Lcom/alibaba/fastjson/serializer/JSONSerializer;->indentCount:I
return v0
.end method
.method public getMapping()Lcom/alibaba/fastjson/serializer/SerializeConfig;
.registers 2
.line 320
iget-object v0, p0, Lcom/alibaba/fastjson/serializer/JSONSerializer;->config:Lcom/alibaba/fastjson/serializer/SerializeConfig;
return-object v0
.end method
.method public getNameFilters()Ljava/util/List;
.registers 2
.annotation system Ldalvik/annotation/Signature;
value = {
"()",
"Ljava/util/List<",
"Lcom/alibaba/fastjson/serializer/NameFilter;",
">;"
}
.end annotation
.line 264
iget-object v0, p0, Lcom/alibaba/fastjson/serializer/JSONSerializer;->nameFilters:Ljava/util/List;
if-nez v0, :cond_b
.line 265
new-instance v0, Ljava/util/ArrayList;
invoke-direct {v0}, Ljava/util/ArrayList;-><init>()V
iput-object v0, p0, Lcom/alibaba/fastjson/serializer/JSONSerializer;->nameFilters:Ljava/util/List;
.line 268
:cond_b
iget-object v0, p0, Lcom/alibaba/fastjson/serializer/JSONSerializer;->nameFilters:Ljava/util/List;
return-object v0
.end method
.method public getNameFiltersDirect()Ljava/util/List;
.registers 2
.annotation system Ldalvik/annotation/Signature;
value = {
"()",
"Ljava/util/List<",
"Lcom/alibaba/fastjson/serializer/NameFilter;",
">;"
}
.end annotation
.line 272
iget-object v0, p0, Lcom/alibaba/fastjson/serializer/JSONSerializer;->nameFilters:Ljava/util/List;
return-object v0
.end method
.method public getObjectWriter(Ljava/lang/Class;)Lcom/alibaba/fastjson/serializer/ObjectSerializer;
.registers 11
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/lang/Class<",
"*>;)",
"Lcom/alibaba/fastjson/serializer/ObjectSerializer;"
}
.end annotation
.line 404
.local p1, "clazz":Ljava/lang/Class;, "Ljava/lang/Class<*>;"
iget-object v0, p0, Lcom/alibaba/fastjson/serializer/JSONSerializer;->config:Lcom/alibaba/fastjson/serializer/SerializeConfig;
invoke-virtual {v0, p1}, Lcom/alibaba/fastjson/serializer/SerializeConfig;->get(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Lcom/alibaba/fastjson/serializer/ObjectSerializer;
.line 406
.local v0, "writer":Lcom/alibaba/fastjson/serializer/ObjectSerializer;
if-nez v0, :cond_180
.line 407
const-class v1, Ljava/util/Map;
invoke-virtual {v1, p1}, Ljava/lang/Class;->isAssignableFrom(Ljava/lang/Class;)Z
move-result v1
if-eqz v1, :cond_1b
.line 408
iget-object v1, p0, Lcom/alibaba/fastjson/serializer/JSONSerializer;->config:Lcom/alibaba/fastjson/serializer/SerializeConfig;
sget-object v2, Lcom/alibaba/fastjson/serializer/MapSerializer;->instance:Lcom/alibaba/fastjson/serializer/MapSerializer;
invoke-virtual {v1, p1, v2}, Lcom/alibaba/fastjson/serializer/SerializeConfig;->put(Ljava/lang/Object;Ljava/lang/Object;)Z
goto/16 :goto_177
.line 409
:cond_1b
const-class v1, Ljava/util/List;
invoke-virtual {v1, p1}, Ljava/lang/Class;->isAssignableFrom(Ljava/lang/Class;)Z
move-result v1
if-eqz v1, :cond_2c
.line 410
iget-object v1, p0, Lcom/alibaba/fastjson/serializer/JSONSerializer;->config:Lcom/alibaba/fastjson/serializer/SerializeConfig;
sget-object v2, Lcom/alibaba/fastjson/serializer/ListSerializer;->instance:Lcom/alibaba/fastjson/serializer/ListSerializer;
invoke-virtual {v1, p1, v2}, Lcom/alibaba/fastjson/serializer/SerializeConfig;->put(Ljava/lang/Object;Ljava/lang/Object;)Z
goto/16 :goto_177
.line 411
:cond_2c
const-class v1, Ljava/util/Collection;
invoke-virtual {v1, p1}, Ljava/lang/Class;->isAssignableFrom(Ljava/lang/Class;)Z
move-result v1
if-eqz v1, :cond_3d
.line 412
iget-object v1, p0, Lcom/alibaba/fastjson/serializer/JSONSerializer;->config:Lcom/alibaba/fastjson/serializer/SerializeConfig;
sget-object v2, Lcom/alibaba/fastjson/serializer/CollectionSerializer;->instance:Lcom/alibaba/fastjson/serializer/CollectionSerializer;
invoke-virtual {v1, p1, v2}, Lcom/alibaba/fastjson/serializer/SerializeConfig;->put(Ljava/lang/Object;Ljava/lang/Object;)Z
goto/16 :goto_177
.line 413
:cond_3d
const-class v1, Ljava/util/Date;
invoke-virtual {v1, p1}, Ljava/lang/Class;->isAssignableFrom(Ljava/lang/Class;)Z
move-result v1
if-eqz v1, :cond_4e
.line 414
iget-object v1, p0, Lcom/alibaba/fastjson/serializer/JSONSerializer;->config:Lcom/alibaba/fastjson/serializer/SerializeConfig;
sget-object v2, Lcom/alibaba/fastjson/serializer/DateSerializer;->instance:Lcom/alibaba/fastjson/serializer/DateSerializer;
invoke-virtual {v1, p1, v2}, Lcom/alibaba/fastjson/serializer/SerializeConfig;->put(Ljava/lang/Object;Ljava/lang/Object;)Z
goto/16 :goto_177
.line 415
:cond_4e
const-class v1, Lcom/alibaba/fastjson/JSONAware;
invoke-virtual {v1, p1}, Ljava/lang/Class;->isAssignableFrom(Ljava/lang/Class;)Z
move-result v1
if-eqz v1, :cond_5f
.line 416
iget-object v1, p0, Lcom/alibaba/fastjson/serializer/JSONSerializer;->config:Lcom/alibaba/fastjson/serializer/SerializeConfig;
sget-object v2, Lcom/alibaba/fastjson/serializer/JSONAwareSerializer;->instance:Lcom/alibaba/fastjson/serializer/JSONAwareSerializer;
invoke-virtual {v1, p1, v2}, Lcom/alibaba/fastjson/serializer/SerializeConfig;->put(Ljava/lang/Object;Ljava/lang/Object;)Z
goto/16 :goto_177
.line 417
:cond_5f
const-class v1, Lcom/alibaba/fastjson/serializer/JSONSerializable;
invoke-virtual {v1, p1}, Ljava/lang/Class;->isAssignableFrom(Ljava/lang/Class;)Z
move-result v1
if-eqz v1, :cond_70
.line 418
iget-object v1, p0, Lcom/alibaba/fastjson/serializer/JSONSerializer;->config:Lcom/alibaba/fastjson/serializer/SerializeConfig;
sget-object v2, Lcom/alibaba/fastjson/serializer/JSONSerializableSerializer;->instance:Lcom/alibaba/fastjson/serializer/JSONSerializableSerializer;
invoke-virtual {v1, p1, v2}, Lcom/alibaba/fastjson/serializer/SerializeConfig;->put(Ljava/lang/Object;Ljava/lang/Object;)Z
goto/16 :goto_177
.line 419
:cond_70
const-class v1, Lcom/alibaba/fastjson/JSONStreamAware;
invoke-virtual {v1, p1}, Ljava/lang/Class;->isAssignableFrom(Ljava/lang/Class;)Z
move-result v1
if-eqz v1, :cond_81
.line 420
iget-object v1, p0, Lcom/alibaba/fastjson/serializer/JSONSerializer;->config:Lcom/alibaba/fastjson/serializer/SerializeConfig;
sget-object v2, Lcom/alibaba/fastjson/serializer/JSONStreamAwareSerializer;->instance:Lcom/alibaba/fastjson/serializer/JSONStreamAwareSerializer;
invoke-virtual {v1, p1, v2}, Lcom/alibaba/fastjson/serializer/SerializeConfig;->put(Ljava/lang/Object;Ljava/lang/Object;)Z
goto/16 :goto_177
.line 421
:cond_81
invoke-virtual {p1}, Ljava/lang/Class;->isEnum()Z
move-result v1
if-nez v1, :cond_170
invoke-virtual {p1}, Ljava/lang/Class;->getSuperclass()Ljava/lang/Class;
move-result-object v1
if-eqz v1, :cond_99
invoke-virtual {p1}, Ljava/lang/Class;->getSuperclass()Ljava/lang/Class;
move-result-object v1
invoke-virtual {v1}, Ljava/lang/Class;->isEnum()Z
move-result v1
if-eqz v1, :cond_99
goto/16 :goto_170
.line 423
:cond_99
invoke-virtual {p1}, Ljava/lang/Class;->isArray()Z
move-result v1
if-eqz v1, :cond_b3
.line 424
invoke-virtual {p1}, Ljava/lang/Class;->getComponentType()Ljava/lang/Class;
move-result-object v1
.line 425
.local v1, "componentType":Ljava/lang/Class;, "Ljava/lang/Class<*>;"
invoke-virtual {p0, v1}, Lcom/alibaba/fastjson/serializer/JSONSerializer;->getObjectWriter(Ljava/lang/Class;)Lcom/alibaba/fastjson/serializer/ObjectSerializer;
move-result-object v2
.line 426
.local v2, "compObjectSerializer":Lcom/alibaba/fastjson/serializer/ObjectSerializer;
iget-object v3, p0, Lcom/alibaba/fastjson/serializer/JSONSerializer;->config:Lcom/alibaba/fastjson/serializer/SerializeConfig;
new-instance v4, Lcom/alibaba/fastjson/serializer/ArraySerializer;
invoke-direct {v4, v1, v2}, Lcom/alibaba/fastjson/serializer/ArraySerializer;-><init>(Ljava/lang/Class;Lcom/alibaba/fastjson/serializer/ObjectSerializer;)V
invoke-virtual {v3, p1, v4}, Lcom/alibaba/fastjson/serializer/SerializeConfig;->put(Ljava/lang/Object;Ljava/lang/Object;)Z
.line 427
.end local v1 # "componentType":Ljava/lang/Class;, "Ljava/lang/Class<*>;"
.end local v2 # "compObjectSerializer":Lcom/alibaba/fastjson/serializer/ObjectSerializer;
goto/16 :goto_177
:cond_b3
const-class v1, Ljava/lang/Throwable;
invoke-virtual {v1, p1}, Ljava/lang/Class;->isAssignableFrom(Ljava/lang/Class;)Z
move-result v1
if-eqz v1, :cond_c7
.line 428
iget-object v1, p0, Lcom/alibaba/fastjson/serializer/JSONSerializer;->config:Lcom/alibaba/fastjson/serializer/SerializeConfig;
new-instance v2, Lcom/alibaba/fastjson/serializer/ExceptionSerializer;
invoke-direct {v2, p1}, Lcom/alibaba/fastjson/serializer/ExceptionSerializer;-><init>(Ljava/lang/Class;)V
invoke-virtual {v1, p1, v2}, Lcom/alibaba/fastjson/serializer/SerializeConfig;->put(Ljava/lang/Object;Ljava/lang/Object;)Z
goto/16 :goto_177
.line 429
:cond_c7
const-class v1, Ljava/util/TimeZone;
invoke-virtual {v1, p1}, Ljava/lang/Class;->isAssignableFrom(Ljava/lang/Class;)Z
move-result v1
if-eqz v1, :cond_d8
.line 430
iget-object v1, p0, Lcom/alibaba/fastjson/serializer/JSONSerializer;->config:Lcom/alibaba/fastjson/serializer/SerializeConfig;
sget-object v2, Lcom/alibaba/fastjson/serializer/TimeZoneCodec;->instance:Lcom/alibaba/fastjson/serializer/TimeZoneCodec;
invoke-virtual {v1, p1, v2}, Lcom/alibaba/fastjson/serializer/SerializeConfig;->put(Ljava/lang/Object;Ljava/lang/Object;)Z
goto/16 :goto_177
.line 431
:cond_d8
const-class v1, Ljava/nio/charset/Charset;
invoke-virtual {v1, p1}, Ljava/lang/Class;->isAssignableFrom(Ljava/lang/Class;)Z
move-result v1
if-eqz v1, :cond_e9
.line 432
iget-object v1, p0, Lcom/alibaba/fastjson/serializer/JSONSerializer;->config:Lcom/alibaba/fastjson/serializer/SerializeConfig;
sget-object v2, Lcom/alibaba/fastjson/serializer/CharsetCodec;->instance:Lcom/alibaba/fastjson/serializer/CharsetCodec;
invoke-virtual {v1, p1, v2}, Lcom/alibaba/fastjson/serializer/SerializeConfig;->put(Ljava/lang/Object;Ljava/lang/Object;)Z
goto/16 :goto_177
.line 433
:cond_e9
const-class v1, Ljava/util/Enumeration;
invoke-virtual {v1, p1}, Ljava/lang/Class;->isAssignableFrom(Ljava/lang/Class;)Z
move-result v1
if-eqz v1, :cond_fa
.line 434
iget-object v1, p0, Lcom/alibaba/fastjson/serializer/JSONSerializer;->config:Lcom/alibaba/fastjson/serializer/SerializeConfig;
sget-object v2, Lcom/alibaba/fastjson/serializer/EnumerationSeriliazer;->instance:Lcom/alibaba/fastjson/serializer/EnumerationSeriliazer;
invoke-virtual {v1, p1, v2}, Lcom/alibaba/fastjson/serializer/SerializeConfig;->put(Ljava/lang/Object;Ljava/lang/Object;)Z
goto/16 :goto_177
.line 435
:cond_fa
const-class v1, Ljava/util/Calendar;
invoke-virtual {v1, p1}, Ljava/lang/Class;->isAssignableFrom(Ljava/lang/Class;)Z
move-result v1
if-eqz v1, :cond_10b
.line 436
iget-object v1, p0, Lcom/alibaba/fastjson/serializer/JSONSerializer;->config:Lcom/alibaba/fastjson/serializer/SerializeConfig;
sget-object v2, Lcom/alibaba/fastjson/serializer/CalendarCodec;->instance:Lcom/alibaba/fastjson/serializer/CalendarCodec;
invoke-virtual {v1, p1, v2}, Lcom/alibaba/fastjson/serializer/SerializeConfig;->put(Ljava/lang/Object;Ljava/lang/Object;)Z
goto/16 :goto_177
.line 438
:cond_10b
const/4 v1, 0x0
.line 439
.local v1, "isCglibProxy":Z
const/4 v2, 0x0
.line 440
.local v2, "isJavassistProxy":Z
invoke-virtual {p1}, Ljava/lang/Class;->getInterfaces()[Ljava/lang/Class;
move-result-object v3
.local v3, "arr$":[Ljava/lang/Class;
array-length v4, v3
.local v4, "len$":I
const/4 v5, 0x0
.local v5, "i$":I
:goto_113
if-ge v5, v4, :cond_143
aget-object v6, v3, v5
.line 441
.local v6, "item":Ljava/lang/Class;, "Ljava/lang/Class<*>;"
invoke-virtual {v6}, Ljava/lang/Class;->getName()Ljava/lang/String;
move-result-object v7
const-string v8, "net.sf.cglib.proxy.Factory"
invoke-virtual {v7, v8}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v7
if-nez v7, :cond_141
invoke-virtual {v6}, Ljava/lang/Class;->getName()Ljava/lang/String;
move-result-object v7
const-string v8, "org.springframework.cglib.proxy.Factory"
invoke-virtual {v7, v8}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v7
if-eqz v7, :cond_130
goto :goto_141
.line 445
:cond_130
invoke-virtual {v6}, Ljava/lang/Class;->getName()Ljava/lang/String;
move-result-object v7
const-string v8, "javassist.util.proxy.ProxyObject"
invoke-virtual {v7, v8}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v7
if-eqz v7, :cond_13e
.line 446
const/4 v2, 0x1
.line 447
goto :goto_143
.line 440
.end local v6 # "item":Ljava/lang/Class;, "Ljava/lang/Class<*>;"
:cond_13e
add-int/lit8 v5, v5, 0x1
goto :goto_113
.line 443
.restart local v6 # "item":Ljava/lang/Class;, "Ljava/lang/Class<*>;"
:cond_141
:goto_141
const/4 v1, 0x1
.line 444
nop
.line 451
.end local v3 # "arr$":[Ljava/lang/Class;
.end local v4 # "len$":I
.end local v5 # "i$":I
.end local v6 # "item":Ljava/lang/Class;, "Ljava/lang/Class<*>;"
:cond_143
:goto_143
if-nez v1, :cond_162
if-eqz v2, :cond_148
goto :goto_162
.line 459
:cond_148
invoke-static {p1}, Ljava/lang/reflect/Proxy;->isProxyClass(Ljava/lang/Class;)Z
move-result v3
if-eqz v3, :cond_158
.line 460
iget-object v3, p0, Lcom/alibaba/fastjson/serializer/JSONSerializer;->config:Lcom/alibaba/fastjson/serializer/SerializeConfig;
invoke-virtual {v3, p1}, Lcom/alibaba/fastjson/serializer/SerializeConfig;->createJavaBeanSerializer(Ljava/lang/Class;)Lcom/alibaba/fastjson/serializer/ObjectSerializer;
move-result-object v4
invoke-virtual {v3, p1, v4}, Lcom/alibaba/fastjson/serializer/SerializeConfig;->put(Ljava/lang/Object;Ljava/lang/Object;)Z
goto :goto_177
.line 462
:cond_158
iget-object v3, p0, Lcom/alibaba/fastjson/serializer/JSONSerializer;->config:Lcom/alibaba/fastjson/serializer/SerializeConfig;
invoke-virtual {v3, p1}, Lcom/alibaba/fastjson/serializer/SerializeConfig;->createJavaBeanSerializer(Ljava/lang/Class;)Lcom/alibaba/fastjson/serializer/ObjectSerializer;
move-result-object v4
invoke-virtual {v3, p1, v4}, Lcom/alibaba/fastjson/serializer/SerializeConfig;->put(Ljava/lang/Object;Ljava/lang/Object;)Z
goto :goto_177
.line 452
:cond_162
:goto_162
invoke-virtual {p1}, Ljava/lang/Class;->getSuperclass()Ljava/lang/Class;
move-result-object v3
.line 454
.local v3, "superClazz":Ljava/lang/Class;, "Ljava/lang/Class<*>;"
invoke-virtual {p0, v3}, Lcom/alibaba/fastjson/serializer/JSONSerializer;->getObjectWriter(Ljava/lang/Class;)Lcom/alibaba/fastjson/serializer/ObjectSerializer;
move-result-object v4
.line 455
.local v4, "superWriter":Lcom/alibaba/fastjson/serializer/ObjectSerializer;
iget-object v5, p0, Lcom/alibaba/fastjson/serializer/JSONSerializer;->config:Lcom/alibaba/fastjson/serializer/SerializeConfig;
invoke-virtual {v5, p1, v4}, Lcom/alibaba/fastjson/serializer/SerializeConfig;->put(Ljava/lang/Object;Ljava/lang/Object;)Z
.line 456
return-object v4
.line 422
.end local v1 # "isCglibProxy":Z
.end local v2 # "isJavassistProxy":Z
.end local v3 # "superClazz":Ljava/lang/Class;, "Ljava/lang/Class<*>;"
.end local v4 # "superWriter":Lcom/alibaba/fastjson/serializer/ObjectSerializer;
:cond_170
:goto_170
iget-object v1, p0, Lcom/alibaba/fastjson/serializer/JSONSerializer;->config:Lcom/alibaba/fastjson/serializer/SerializeConfig;
sget-object v2, Lcom/alibaba/fastjson/serializer/EnumSerializer;->instance:Lcom/alibaba/fastjson/serializer/EnumSerializer;
invoke-virtual {v1, p1, v2}, Lcom/alibaba/fastjson/serializer/SerializeConfig;->put(Ljava/lang/Object;Ljava/lang/Object;)Z
.line 466
:goto_177
iget-object v1, p0, Lcom/alibaba/fastjson/serializer/JSONSerializer;->config:Lcom/alibaba/fastjson/serializer/SerializeConfig;
invoke-virtual {v1, p1}, Lcom/alibaba/fastjson/serializer/SerializeConfig;->get(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v1
move-object v0, v1
check-cast v0, Lcom/alibaba/fastjson/serializer/ObjectSerializer;
.line 468
:cond_180
return-object v0
.end method
.method public getPropertyFilters()Ljava/util/List;
.registers 2
.annotation system Ldalvik/annotation/Signature;
value = {
"()",
"Ljava/util/List<",
"Lcom/alibaba/fastjson/serializer/PropertyFilter;",
">;"
}
.end annotation
.line 288
iget-object v0, p0, Lcom/alibaba/fastjson/serializer/JSONSerializer;->propertyFilters:Ljava/util/List;
if-nez v0, :cond_b
.line 289
new-instance v0, Ljava/util/ArrayList;
invoke-direct {v0}, Ljava/util/ArrayList;-><init>()V
iput-object v0, p0, Lcom/alibaba/fastjson/serializer/JSONSerializer;->propertyFilters:Ljava/util/List;
.line 292
:cond_b
iget-object v0, p0, Lcom/alibaba/fastjson/serializer/JSONSerializer;->propertyFilters:Ljava/util/List;
return-object v0
.end method
.method public getPropertyFiltersDirect()Ljava/util/List;
.registers 2
.annotation system Ldalvik/annotation/Signature;
value = {
"()",
"Ljava/util/List<",
"Lcom/alibaba/fastjson/serializer/PropertyFilter;",
">;"
}
.end annotation
.line 296
iget-object v0, p0, Lcom/alibaba/fastjson/serializer/JSONSerializer;->propertyFilters:Ljava/util/List;
return-object v0
.end method
.method public getPropertyPreFilters()Ljava/util/List;
.registers 2
.annotation system Ldalvik/annotation/Signature;
value = {
"()",
"Ljava/util/List<",
"Lcom/alibaba/fastjson/serializer/PropertyPreFilter;",
">;"
}
.end annotation
.line 276
iget-object v0, p0, Lcom/alibaba/fastjson/serializer/JSONSerializer;->propertyPreFilters:Ljava/util/List;
if-nez v0, :cond_b
.line 277
new-instance v0, Ljava/util/ArrayList;
invoke-direct {v0}, Ljava/util/ArrayList;-><init>()V
iput-object v0, p0, Lcom/alibaba/fastjson/serializer/JSONSerializer;->propertyPreFilters:Ljava/util/List;
.line 280
:cond_b
iget-object v0, p0, Lcom/alibaba/fastjson/serializer/JSONSerializer;->propertyPreFilters:Ljava/util/List;
return-object v0
.end method
.method public getPropertyPreFiltersDirect()Ljava/util/List;
.registers 2
.annotation system Ldalvik/annotation/Signature;
value = {
"()",
"Ljava/util/List<",
"Lcom/alibaba/fastjson/serializer/PropertyPreFilter;",
">;"
}
.end annotation
.line 284
iget-object v0, p0, Lcom/alibaba/fastjson/serializer/JSONSerializer;->propertyPreFilters:Ljava/util/List;
return-object v0
.end method
.method public getSerialContext(Ljava/lang/Object;)Lcom/alibaba/fastjson/serializer/SerialContext;
.registers 3
.param p1, "object" # Ljava/lang/Object;
.line 152
iget-object v0, p0, Lcom/alibaba/fastjson/serializer/JSONSerializer;->references:Ljava/util/IdentityHashMap;
if-nez v0, :cond_6
.line 153
const/4 v0, 0x0
return-object v0
.line 156
:cond_6
invoke-virtual {v0, p1}, Ljava/util/IdentityHashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Lcom/alibaba/fastjson/serializer/SerialContext;
return-object v0
.end method
.method public getValueFilters()Ljava/util/List;
.registers 2
.annotation system Ldalvik/annotation/Signature;
value = {
"()",
"Ljava/util/List<",
"Lcom/alibaba/fastjson/serializer/ValueFilter;",
">;"
}
.end annotation
.line 209
iget-object v0, p0, Lcom/alibaba/fastjson/serializer/JSONSerializer;->valueFilters:Ljava/util/List;
if-nez v0, :cond_b
.line 210
new-instance v0, Ljava/util/ArrayList;
invoke-direct {v0}, Ljava/util/ArrayList;-><init>()V
iput-object v0, p0, Lcom/alibaba/fastjson/serializer/JSONSerializer;->valueFilters:Ljava/util/List;
.line 213
:cond_b
iget-object v0, p0, Lcom/alibaba/fastjson/serializer/JSONSerializer;->valueFilters:Ljava/util/List;
return-object v0
.end method
.method public getValueFiltersDirect()Ljava/util/List;
.registers 2
.annotation system Ldalvik/annotation/Signature;
value = {
"()",
"Ljava/util/List<",
"Lcom/alibaba/fastjson/serializer/ValueFilter;",
">;"
}
.end annotation
.line 217
iget-object v0, p0, Lcom/alibaba/fastjson/serializer/JSONSerializer;->valueFilters:Ljava/util/List;
return-object v0
.end method
.method public getWriter()Lcom/alibaba/fastjson/serializer/SerializeWriter;
.registers 2
.line 300
iget-object v0, p0, Lcom/alibaba/fastjson/serializer/JSONSerializer;->out:Lcom/alibaba/fastjson/serializer/SerializeWriter;
return-object v0
.end method
.method public incrementIndent()V
.registers 2
.line 225
iget v0, p0, Lcom/alibaba/fastjson/serializer/JSONSerializer;->indentCount:I
add-int/lit8 v0, v0, 0x1
iput v0, p0, Lcom/alibaba/fastjson/serializer/JSONSerializer;->indentCount:I
.line 226
return-void
.end method
.method public isEnabled(Lcom/alibaba/fastjson/serializer/SerializerFeature;)Z
.registers 3
.param p1, "feature" # Lcom/alibaba/fastjson/serializer/SerializerFeature;
.line 312
iget-object v0, p0, Lcom/alibaba/fastjson/serializer/JSONSerializer;->out:Lcom/alibaba/fastjson/serializer/SerializeWriter;
invoke-virtual {v0, p1}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->isEnabled(Lcom/alibaba/fastjson/serializer/SerializerFeature;)Z
move-result v0
return v0
.end method
.method public final isWriteClassName(Ljava/lang/reflect/Type;Ljava/lang/Object;)Z
.registers 7
.param p1, "fieldType" # Ljava/lang/reflect/Type;
.param p2, "obj" # Ljava/lang/Object;
.line 133
iget-object v0, p0, Lcom/alibaba/fastjson/serializer/JSONSerializer;->out:Lcom/alibaba/fastjson/serializer/SerializeWriter;
sget-object v1, Lcom/alibaba/fastjson/serializer/SerializerFeature;->WriteClassName:Lcom/alibaba/fastjson/serializer/SerializerFeature;
invoke-virtual {v0, v1}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->isEnabled(Lcom/alibaba/fastjson/serializer/SerializerFeature;)Z
move-result v0
.line 135
.local v0, "result":Z
const/4 v1, 0x0
if-nez v0, :cond_c
.line 136
return v1
.line 139
:cond_c
const/4 v2, 0x1
if-nez p1, :cond_25
.line 140
sget-object v3, Lcom/alibaba/fastjson/serializer/SerializerFeature;->NotWriteRootClassName:Lcom/alibaba/fastjson/serializer/SerializerFeature;
invoke-virtual {p0, v3}, Lcom/alibaba/fastjson/serializer/JSONSerializer;->isEnabled(Lcom/alibaba/fastjson/serializer/SerializerFeature;)Z
move-result v3
if-eqz v3, :cond_25
.line 141
iget-object v3, p0, Lcom/alibaba/fastjson/serializer/JSONSerializer;->context:Lcom/alibaba/fastjson/serializer/SerialContext;
invoke-virtual {v3}, Lcom/alibaba/fastjson/serializer/SerialContext;->getParent()Lcom/alibaba/fastjson/serializer/SerialContext;
move-result-object v3
if-nez v3, :cond_21
const/4 v3, 0x1
goto :goto_22
:cond_21
const/4 v3, 0x0
.line 142
.local v3, "isRoot":Z
:goto_22
if-eqz v3, :cond_25
.line 143
return v1
.line 148
.end local v3 # "isRoot":Z
:cond_25
return v2
.end method
.method public println()V
.registers 4
.line 233
iget-object v0, p0, Lcom/alibaba/fastjson/serializer/JSONSerializer;->out:Lcom/alibaba/fastjson/serializer/SerializeWriter;
const/16 v1, 0xa
invoke-virtual {v0, v1}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->write(C)V
.line 234
const/4 v0, 0x0
.local v0, "i":I
:goto_8
iget v1, p0, Lcom/alibaba/fastjson/serializer/JSONSerializer;->indentCount:I
if-ge v0, v1, :cond_16
.line 235
iget-object v1, p0, Lcom/alibaba/fastjson/serializer/JSONSerializer;->out:Lcom/alibaba/fastjson/serializer/SerializeWriter;
iget-object v2, p0, Lcom/alibaba/fastjson/serializer/JSONSerializer;->indent:Ljava/lang/String;
invoke-virtual {v1, v2}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->write(Ljava/lang/String;)V
.line 234
add-int/lit8 v0, v0, 0x1
goto :goto_8
.line 237
.end local v0 # "i":I
:cond_16
return-void
.end method
.method public setContext(Lcom/alibaba/fastjson/serializer/SerialContext;)V
.registers 2
.param p1, "context" # Lcom/alibaba/fastjson/serializer/SerialContext;
.line 117
iput-object p1, p0, Lcom/alibaba/fastjson/serializer/JSONSerializer;->context:Lcom/alibaba/fastjson/serializer/SerialContext;
.line 118
return-void
.end method
.method public setContext(Lcom/alibaba/fastjson/serializer/SerialContext;Ljava/lang/Object;Ljava/lang/Object;I)V
.registers 7
.param p1, "parent" # Lcom/alibaba/fastjson/serializer/SerialContext;
.param p2, "object" # Ljava/lang/Object;
.param p3, "fieldName" # Ljava/lang/Object;
.param p4, "features" # I
.line 121
sget-object v0, Lcom/alibaba/fastjson/serializer/SerializerFeature;->DisableCircularReferenceDetect:Lcom/alibaba/fastjson/serializer/SerializerFeature;
invoke-virtual {p0, v0}, Lcom/alibaba/fastjson/serializer/JSONSerializer;->isEnabled(Lcom/alibaba/fastjson/serializer/SerializerFeature;)Z
move-result v0
if-eqz v0, :cond_9
.line 122
return-void
.line 125
:cond_9
new-instance v0, Lcom/alibaba/fastjson/serializer/SerialContext;
invoke-direct {v0, p1, p2, p3, p4}, Lcom/alibaba/fastjson/serializer/SerialContext;-><init>(Lcom/alibaba/fastjson/serializer/SerialContext;Ljava/lang/Object;Ljava/lang/Object;I)V
iput-object v0, p0, Lcom/alibaba/fastjson/serializer/JSONSerializer;->context:Lcom/alibaba/fastjson/serializer/SerialContext;
.line 126
iget-object v0, p0, Lcom/alibaba/fastjson/serializer/JSONSerializer;->references:Ljava/util/IdentityHashMap;
if-nez v0, :cond_1b
.line 127
new-instance v0, Ljava/util/IdentityHashMap;
invoke-direct {v0}, Ljava/util/IdentityHashMap;-><init>()V
iput-object v0, p0, Lcom/alibaba/fastjson/serializer/JSONSerializer;->references:Ljava/util/IdentityHashMap;
.line 129
:cond_1b
iget-object v0, p0, Lcom/alibaba/fastjson/serializer/JSONSerializer;->references:Ljava/util/IdentityHashMap;
iget-object v1, p0, Lcom/alibaba/fastjson/serializer/JSONSerializer;->context:Lcom/alibaba/fastjson/serializer/SerialContext;
invoke-virtual {v0, p2, v1}, Ljava/util/IdentityHashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
.line 130
return-void
.end method
.method public setDateFormat(Ljava/lang/String;)V
.registers 3
.param p1, "dateFormat" # Ljava/lang/String;
.line 106
iput-object p1, p0, Lcom/alibaba/fastjson/serializer/JSONSerializer;->dateFormatPattern:Ljava/lang/String;
.line 107
iget-object v0, p0, Lcom/alibaba/fastjson/serializer/JSONSerializer;->dateFormat:Ljava/text/DateFormat;
if-eqz v0, :cond_9
.line 108
const/4 v0, 0x0
iput-object v0, p0, Lcom/alibaba/fastjson/serializer/JSONSerializer;->dateFormat:Ljava/text/DateFormat;
.line 110
:cond_9
return-void
.end method
.method public setDateFormat(Ljava/text/DateFormat;)V
.registers 3
.param p1, "dateFormat" # Ljava/text/DateFormat;
.line 99
iput-object p1, p0, Lcom/alibaba/fastjson/serializer/JSONSerializer;->dateFormat:Ljava/text/DateFormat;
.line 100
iget-object v0, p0, Lcom/alibaba/fastjson/serializer/JSONSerializer;->dateFormatPattern:Ljava/lang/String;
if-eqz v0, :cond_9
.line 101
const/4 v0, 0x0
iput-object v0, p0, Lcom/alibaba/fastjson/serializer/JSONSerializer;->dateFormatPattern:Ljava/lang/String;
.line 103
:cond_9
return-void
.end method
.method public toString()Ljava/lang/String;
.registers 2
.line 304
iget-object v0, p0, Lcom/alibaba/fastjson/serializer/JSONSerializer;->out:Lcom/alibaba/fastjson/serializer/SerializeWriter;
invoke-virtual {v0}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->toString()Ljava/lang/String;
move-result-object v0
return-object v0
.end method
.method public final write(Ljava/lang/Object;)V
.registers 7
.param p1, "object" # Ljava/lang/Object;
.line 342
if-nez p1, :cond_8
.line 343
iget-object v0, p0, Lcom/alibaba/fastjson/serializer/JSONSerializer;->out:Lcom/alibaba/fastjson/serializer/SerializeWriter;
invoke-virtual {v0}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->writeNull()V
.line 344
return-void
.line 347
:cond_8
invoke-virtual {p1}, Ljava/lang/Object;->getClass()Ljava/lang/Class;
move-result-object v0
.line 348
.local v0, "clazz":Ljava/lang/Class;, "Ljava/lang/Class<*>;"
invoke-virtual {p0, v0}, Lcom/alibaba/fastjson/serializer/JSONSerializer;->getObjectWriter(Ljava/lang/Class;)Lcom/alibaba/fastjson/serializer/ObjectSerializer;
move-result-object v1
.line 351
.local v1, "writer":Lcom/alibaba/fastjson/serializer/ObjectSerializer;
const/4 v2, 0x0
:try_start_11
invoke-interface {v1, p0, p1, v2, v2}, Lcom/alibaba/fastjson/serializer/ObjectSerializer;->write(Lcom/alibaba/fastjson/serializer/JSONSerializer;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/reflect/Type;)V
:try_end_14
.catch Ljava/io/IOException; {:try_start_11 .. :try_end_14} :catch_16
.line 354
nop
.line 355
return-void
.line 352
:catch_16
move-exception v2
.line 353
.local v2, "e":Ljava/io/IOException;
new-instance v3, Lcom/alibaba/fastjson/JSONException;
invoke-virtual {v2}, Ljava/io/IOException;->getMessage()Ljava/lang/String;
move-result-object v4
invoke-direct {v3, v4, v2}, Lcom/alibaba/fastjson/JSONException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V
throw v3
.end method
.method public final write(Ljava/lang/String;)V
.registers 3
.param p1, "text" # Ljava/lang/String;
.line 400
sget-object v0, Lcom/alibaba/fastjson/serializer/StringCodec;->instance:Lcom/alibaba/fastjson/serializer/StringCodec;
invoke-virtual {v0, p0, p1}, Lcom/alibaba/fastjson/serializer/StringCodec;->write(Lcom/alibaba/fastjson/serializer/JSONSerializer;Ljava/lang/String;)V
.line 401
return-void
.end method
.method protected final writeKeyValue(CLjava/lang/String;Ljava/lang/Object;)V
.registers 5
.param p1, "seperator" # C
.param p2, "key" # Ljava/lang/String;
.param p3, "value" # Ljava/lang/Object;
.line 362
if-eqz p1, :cond_7
.line 363
iget-object v0, p0, Lcom/alibaba/fastjson/serializer/JSONSerializer;->out:Lcom/alibaba/fastjson/serializer/SerializeWriter;
invoke-virtual {v0, p1}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->write(C)V
.line 365
:cond_7
iget-object v0, p0, Lcom/alibaba/fastjson/serializer/JSONSerializer;->out:Lcom/alibaba/fastjson/serializer/SerializeWriter;
invoke-virtual {v0, p2}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->writeFieldName(Ljava/lang/String;)V
.line 366
invoke-virtual {p0, p3}, Lcom/alibaba/fastjson/serializer/JSONSerializer;->write(Ljava/lang/Object;)V
.line 367
return-void
.end method
.method public writeNull()V
.registers 2
.line 316
iget-object v0, p0, Lcom/alibaba/fastjson/serializer/JSONSerializer;->out:Lcom/alibaba/fastjson/serializer/SerializeWriter;
invoke-virtual {v0}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->writeNull()V
.line 317
return-void
.end method
.method public writeReference(Ljava/lang/Object;)V
.registers 10
.param p1, "object" # Ljava/lang/Object;
.line 168
invoke-virtual {p0}, Lcom/alibaba/fastjson/serializer/JSONSerializer;->getContext()Lcom/alibaba/fastjson/serializer/SerialContext;
move-result-object v0
.line 169
.local v0, "context":Lcom/alibaba/fastjson/serializer/SerialContext;
invoke-virtual {v0}, Lcom/alibaba/fastjson/serializer/SerialContext;->getObject()Ljava/lang/Object;
move-result-object v1
.line 171
.local v1, "current":Ljava/lang/Object;
if-ne p1, v1, :cond_13
.line 172
iget-object v2, p0, Lcom/alibaba/fastjson/serializer/JSONSerializer;->out:Lcom/alibaba/fastjson/serializer/SerializeWriter;
const-string/jumbo v3, "{\"$ref\":\"@\"}"
invoke-virtual {v2, v3}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->write(Ljava/lang/String;)V
.line 173
return-void
.line 176
:cond_13
invoke-virtual {v0}, Lcom/alibaba/fastjson/serializer/SerialContext;->getParent()Lcom/alibaba/fastjson/serializer/SerialContext;
move-result-object v2
.line 178
.local v2, "parentContext":Lcom/alibaba/fastjson/serializer/SerialContext;
if-eqz v2, :cond_28
.line 179
invoke-virtual {v2}, Lcom/alibaba/fastjson/serializer/SerialContext;->getObject()Ljava/lang/Object;
move-result-object v3
if-ne p1, v3, :cond_28
.line 180
iget-object v3, p0, Lcom/alibaba/fastjson/serializer/JSONSerializer;->out:Lcom/alibaba/fastjson/serializer/SerializeWriter;
const-string/jumbo v4, "{\"$ref\":\"..\"}"
invoke-virtual {v3, v4}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->write(Ljava/lang/String;)V
.line 181
return-void
.line 185
:cond_28
move-object v3, v0
.line 187
.local v3, "rootContext":Lcom/alibaba/fastjson/serializer/SerialContext;
:goto_29
invoke-virtual {v3}, Lcom/alibaba/fastjson/serializer/SerialContext;->getParent()Lcom/alibaba/fastjson/serializer/SerialContext;
move-result-object v4
if-nez v4, :cond_5c
.line 188
nop
.line 193
invoke-virtual {v3}, Lcom/alibaba/fastjson/serializer/SerialContext;->getObject()Ljava/lang/Object;
move-result-object v4
if-ne p1, v4, :cond_3f
.line 194
iget-object v4, p0, Lcom/alibaba/fastjson/serializer/JSONSerializer;->out:Lcom/alibaba/fastjson/serializer/SerializeWriter;
const-string/jumbo v5, "{\"$ref\":\"$\"}"
invoke-virtual {v4, v5}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->write(Ljava/lang/String;)V
.line 195
return-void
.line 198
:cond_3f
invoke-virtual {p0, p1}, Lcom/alibaba/fastjson/serializer/JSONSerializer;->getSerialContext(Ljava/lang/Object;)Lcom/alibaba/fastjson/serializer/SerialContext;
move-result-object v4
.line 200
.local v4, "refContext":Lcom/alibaba/fastjson/serializer/SerialContext;
invoke-virtual {v4}, Lcom/alibaba/fastjson/serializer/SerialContext;->getPath()Ljava/lang/String;
move-result-object v5
.line 202
.local v5, "path":Ljava/lang/String;
iget-object v6, p0, Lcom/alibaba/fastjson/serializer/JSONSerializer;->out:Lcom/alibaba/fastjson/serializer/SerializeWriter;
const-string/jumbo v7, "{\"$ref\":\""
invoke-virtual {v6, v7}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->write(Ljava/lang/String;)V
.line 203
iget-object v6, p0, Lcom/alibaba/fastjson/serializer/JSONSerializer;->out:Lcom/alibaba/fastjson/serializer/SerializeWriter;
invoke-virtual {v6, v5}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->write(Ljava/lang/String;)V
.line 204
iget-object v6, p0, Lcom/alibaba/fastjson/serializer/JSONSerializer;->out:Lcom/alibaba/fastjson/serializer/SerializeWriter;
const-string v7, "\"}"
invoke-virtual {v6, v7}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->write(Ljava/lang/String;)V
.line 205
return-void
.line 190
.end local v4 # "refContext":Lcom/alibaba/fastjson/serializer/SerialContext;
.end local v5 # "path":Ljava/lang/String;
:cond_5c
invoke-virtual {v3}, Lcom/alibaba/fastjson/serializer/SerialContext;->getParent()Lcom/alibaba/fastjson/serializer/SerialContext;
move-result-object v3
goto :goto_29
.end method
.method public final writeWithFieldName(Ljava/lang/Object;Ljava/lang/Object;)V
.registers 5
.param p1, "object" # Ljava/lang/Object;
.param p2, "fieldName" # Ljava/lang/Object;
.line 358
const/4 v0, 0x0
const/4 v1, 0x0
invoke-virtual {p0, p1, p2, v0, v1}, Lcom/alibaba/fastjson/serializer/JSONSerializer;->writeWithFieldName(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/reflect/Type;I)V
.line 359
return-void
.end method
.method public final writeWithFieldName(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/reflect/Type;I)V
.registers 8
.param p1, "object" # Ljava/lang/Object;
.param p2, "fieldName" # Ljava/lang/Object;
.param p3, "fieldType" # Ljava/lang/reflect/Type;
.param p4, "features" # I
.line 371
if-nez p1, :cond_8
.line 372
:try_start_2
iget-object v0, p0, Lcom/alibaba/fastjson/serializer/JSONSerializer;->out:Lcom/alibaba/fastjson/serializer/SerializeWriter;
invoke-virtual {v0}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->writeNull()V
.line 373
return-void
.line 376
:cond_8
invoke-virtual {p1}, Ljava/lang/Object;->getClass()Ljava/lang/Class;
move-result-object v0
.line 378
.local v0, "clazz":Ljava/lang/Class;, "Ljava/lang/Class<*>;"
invoke-virtual {p0, v0}, Lcom/alibaba/fastjson/serializer/JSONSerializer;->getObjectWriter(Ljava/lang/Class;)Lcom/alibaba/fastjson/serializer/ObjectSerializer;
move-result-object v1
.line 380
.local v1, "writer":Lcom/alibaba/fastjson/serializer/ObjectSerializer;
invoke-interface {v1, p0, p1, p2, p3}, Lcom/alibaba/fastjson/serializer/ObjectSerializer;->write(Lcom/alibaba/fastjson/serializer/JSONSerializer;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/reflect/Type;)V
:try_end_13
.catch Ljava/io/IOException; {:try_start_2 .. :try_end_13} :catch_15
.line 383
.end local v0 # "clazz":Ljava/lang/Class;, "Ljava/lang/Class<*>;"
.end local v1 # "writer":Lcom/alibaba/fastjson/serializer/ObjectSerializer;
nop
.line 384
return-void
.line 381
:catch_15
move-exception v0
.line 382
.local v0, "e":Ljava/io/IOException;
new-instance v1, Lcom/alibaba/fastjson/JSONException;
invoke-virtual {v0}, Ljava/io/IOException;->getMessage()Ljava/lang/String;
move-result-object v2
invoke-direct {v1, v2, v0}, Lcom/alibaba/fastjson/JSONException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V
throw v1
.end method
.method public final writeWithFormat(Ljava/lang/Object;Ljava/lang/String;)V
.registers 6
.param p1, "object" # Ljava/lang/Object;
.param p2, "format" # Ljava/lang/String;
.line 387
instance-of v0, p1, Ljava/util/Date;
if-eqz v0, :cond_1d
.line 388
invoke-virtual {p0}, Lcom/alibaba/fastjson/serializer/JSONSerializer;->getDateFormat()Ljava/text/DateFormat;
move-result-object v0
.line 389
.local v0, "dateFormat":Ljava/text/DateFormat;
if-nez v0, :cond_10
.line 390
new-instance v1, Ljava/text/SimpleDateFormat;
invoke-direct {v1, p2}, Ljava/text/SimpleDateFormat;-><init>(Ljava/lang/String;)V
move-object v0, v1
.line 392
:cond_10
move-object v1, p1
check-cast v1, Ljava/util/Date;
invoke-virtual {v0, v1}, Ljava/text/DateFormat;->format(Ljava/util/Date;)Ljava/lang/String;
move-result-object v1
.line 393
.local v1, "text":Ljava/lang/String;
iget-object v2, p0, Lcom/alibaba/fastjson/serializer/JSONSerializer;->out:Lcom/alibaba/fastjson/serializer/SerializeWriter;
invoke-virtual {v2, v1}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->writeString(Ljava/lang/String;)V
.line 394
return-void
.line 396
.end local v0 # "dateFormat":Ljava/text/DateFormat;
.end local v1 # "text":Ljava/lang/String;
:cond_1d
invoke-virtual {p0, p1}, Lcom/alibaba/fastjson/serializer/JSONSerializer;->write(Ljava/lang/Object;)V
.line 397
return-void
.end method