JavaBeanSerializer.smali
.class public Lcom/alibaba/fastjson/serializer/JavaBeanSerializer;
.super Ljava/lang/Object;
.source "JavaBeanSerializer.java"
# interfaces
.implements Lcom/alibaba/fastjson/serializer/ObjectSerializer;
# instance fields
.field private features:I
.field private final getters:[Lcom/alibaba/fastjson/serializer/FieldSerializer;
.field private final sortedGetters:[Lcom/alibaba/fastjson/serializer/FieldSerializer;
# direct methods
.method static constructor <clinit>()V
.registers 1
return-void
.end method
.method public constructor <init>(Ljava/lang/Class;)V
.registers 3
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/lang/Class<",
"*>;)V"
}
.end annotation
.line 48
.local p1, "clazz":Ljava/lang/Class;, "Ljava/lang/Class<*>;"
const/4 v0, 0x0
check-cast v0, Ljava/util/Map;
invoke-direct {p0, p1, v0}, Lcom/alibaba/fastjson/serializer/JavaBeanSerializer;-><init>(Ljava/lang/Class;Ljava/util/Map;)V
.line 49
return-void
.end method
.method public constructor <init>(Ljava/lang/Class;Ljava/util/Map;)V
.registers 8
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/lang/Class<",
"*>;",
"Ljava/util/Map<",
"Ljava/lang/String;",
"Ljava/lang/String;",
">;)V"
}
.end annotation
.line 64
.local p1, "clazz":Ljava/lang/Class;, "Ljava/lang/Class<*>;"
.local p2, "aliasMap":Ljava/util/Map;, "Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>;"
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 41
const/4 v0, 0x0
iput v0, p0, Lcom/alibaba/fastjson/serializer/JavaBeanSerializer;->features:I
.line 65
invoke-static {p1}, Lcom/alibaba/fastjson/util/TypeUtils;->getSerializeFeatures(Ljava/lang/Class;)I
move-result v1
iput v1, p0, Lcom/alibaba/fastjson/serializer/JavaBeanSerializer;->features:I
.line 68
new-instance v1, Ljava/util/ArrayList;
invoke-direct {v1}, Ljava/util/ArrayList;-><init>()V
.line 69
.local v1, "getterList":Ljava/util/List;, "Ljava/util/List<Lcom/alibaba/fastjson/serializer/FieldSerializer;>;"
invoke-static {p1, p2, v0}, Lcom/alibaba/fastjson/util/TypeUtils;->computeGetters(Ljava/lang/Class;Ljava/util/Map;Z)Ljava/util/List;
move-result-object v0
.line 71
.local v0, "fieldInfoList":Ljava/util/List;, "Ljava/util/List<Lcom/alibaba/fastjson/util/FieldInfo;>;"
invoke-interface {v0}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v2
.local v2, "i$":Ljava/util/Iterator;
:goto_19
invoke-interface {v2}, Ljava/util/Iterator;->hasNext()Z
move-result v3
if-eqz v3, :cond_2d
invoke-interface {v2}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v3
check-cast v3, Lcom/alibaba/fastjson/util/FieldInfo;
.line 72
.local v3, "fieldInfo":Lcom/alibaba/fastjson/util/FieldInfo;
invoke-virtual {p0, v3}, Lcom/alibaba/fastjson/serializer/JavaBeanSerializer;->createFieldSerializer(Lcom/alibaba/fastjson/util/FieldInfo;)Lcom/alibaba/fastjson/serializer/FieldSerializer;
move-result-object v4
invoke-interface {v1, v4}, Ljava/util/List;->add(Ljava/lang/Object;)Z
goto :goto_19
.line 75
.end local v2 # "i$":Ljava/util/Iterator;
.end local v3 # "fieldInfo":Lcom/alibaba/fastjson/util/FieldInfo;
:cond_2d
invoke-interface {v1}, Ljava/util/List;->size()I
move-result v2
new-array v2, v2, [Lcom/alibaba/fastjson/serializer/FieldSerializer;
invoke-interface {v1, v2}, Ljava/util/List;->toArray([Ljava/lang/Object;)[Ljava/lang/Object;
move-result-object v2
check-cast v2, [Lcom/alibaba/fastjson/serializer/FieldSerializer;
iput-object v2, p0, Lcom/alibaba/fastjson/serializer/JavaBeanSerializer;->getters:[Lcom/alibaba/fastjson/serializer/FieldSerializer;
.line 78
.end local v0 # "fieldInfoList":Ljava/util/List;, "Ljava/util/List<Lcom/alibaba/fastjson/util/FieldInfo;>;"
.end local v1 # "getterList":Ljava/util/List;, "Ljava/util/List<Lcom/alibaba/fastjson/serializer/FieldSerializer;>;"
new-instance v0, Ljava/util/ArrayList;
invoke-direct {v0}, Ljava/util/ArrayList;-><init>()V
.line 79
.local v0, "getterList":Ljava/util/List;, "Ljava/util/List<Lcom/alibaba/fastjson/serializer/FieldSerializer;>;"
const/4 v1, 0x1
invoke-static {p1, p2, v1}, Lcom/alibaba/fastjson/util/TypeUtils;->computeGetters(Ljava/lang/Class;Ljava/util/Map;Z)Ljava/util/List;
move-result-object v1
.line 81
.local v1, "fieldInfoList":Ljava/util/List;, "Ljava/util/List<Lcom/alibaba/fastjson/util/FieldInfo;>;"
invoke-interface {v1}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v2
.restart local v2 # "i$":Ljava/util/Iterator;
:goto_49
invoke-interface {v2}, Ljava/util/Iterator;->hasNext()Z
move-result v3
if-eqz v3, :cond_5d
invoke-interface {v2}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v3
check-cast v3, Lcom/alibaba/fastjson/util/FieldInfo;
.line 82
.restart local v3 # "fieldInfo":Lcom/alibaba/fastjson/util/FieldInfo;
invoke-virtual {p0, v3}, Lcom/alibaba/fastjson/serializer/JavaBeanSerializer;->createFieldSerializer(Lcom/alibaba/fastjson/util/FieldInfo;)Lcom/alibaba/fastjson/serializer/FieldSerializer;
move-result-object v4
invoke-interface {v0, v4}, Ljava/util/List;->add(Ljava/lang/Object;)Z
goto :goto_49
.line 85
.end local v2 # "i$":Ljava/util/Iterator;
.end local v3 # "fieldInfo":Lcom/alibaba/fastjson/util/FieldInfo;
:cond_5d
invoke-interface {v0}, Ljava/util/List;->size()I
move-result v2
new-array v2, v2, [Lcom/alibaba/fastjson/serializer/FieldSerializer;
invoke-interface {v0, v2}, Ljava/util/List;->toArray([Ljava/lang/Object;)[Ljava/lang/Object;
move-result-object v2
check-cast v2, [Lcom/alibaba/fastjson/serializer/FieldSerializer;
iput-object v2, p0, Lcom/alibaba/fastjson/serializer/JavaBeanSerializer;->sortedGetters:[Lcom/alibaba/fastjson/serializer/FieldSerializer;
.line 87
.end local v0 # "getterList":Ljava/util/List;, "Ljava/util/List<Lcom/alibaba/fastjson/serializer/FieldSerializer;>;"
.end local v1 # "fieldInfoList":Ljava/util/List;, "Ljava/util/List<Lcom/alibaba/fastjson/util/FieldInfo;>;"
return-void
.end method
.method public varargs constructor <init>(Ljava/lang/Class;[Ljava/lang/String;)V
.registers 4
.param p2, "aliasList" # [Ljava/lang/String;
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/lang/Class<",
"*>;[",
"Ljava/lang/String;",
")V"
}
.end annotation
.line 52
.local p1, "clazz":Ljava/lang/Class;, "Ljava/lang/Class<*>;"
invoke-static {p2}, Lcom/alibaba/fastjson/serializer/JavaBeanSerializer;->createAliasMap([Ljava/lang/String;)Ljava/util/Map;
move-result-object v0
invoke-direct {p0, p1, v0}, Lcom/alibaba/fastjson/serializer/JavaBeanSerializer;-><init>(Ljava/lang/Class;Ljava/util/Map;)V
.line 53
return-void
.end method
.method static varargs createAliasMap([Ljava/lang/String;)Ljava/util/Map;
.registers 6
.param p0, "aliasList" # [Ljava/lang/String;
.annotation system Ldalvik/annotation/Signature;
value = {
"([",
"Ljava/lang/String;",
")",
"Ljava/util/Map<",
"Ljava/lang/String;",
"Ljava/lang/String;",
">;"
}
.end annotation
.line 56
new-instance v0, Ljava/util/HashMap;
invoke-direct {v0}, Ljava/util/HashMap;-><init>()V
.line 57
.local v0, "aliasMap":Ljava/util/Map;, "Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>;"
move-object v1, p0
.local v1, "arr$":[Ljava/lang/String;
array-length v2, v1
.local v2, "len$":I
const/4 v3, 0x0
.local v3, "i$":I
:goto_8
if-ge v3, v2, :cond_12
aget-object v4, v1, v3
.line 58
.local v4, "alias":Ljava/lang/String;
invoke-interface {v0, v4, v4}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
.line 57
.end local v4 # "alias":Ljava/lang/String;
add-int/lit8 v3, v3, 0x1
goto :goto_8
.line 61
.end local v1 # "arr$":[Ljava/lang/String;
.end local v2 # "len$":I
.end local v3 # "i$":I
:cond_12
return-object v0
.end method
# virtual methods
.method public createFieldSerializer(Lcom/alibaba/fastjson/util/FieldInfo;)Lcom/alibaba/fastjson/serializer/FieldSerializer;
.registers 4
.param p1, "fieldInfo" # Lcom/alibaba/fastjson/util/FieldInfo;
.line 257
invoke-virtual {p1}, Lcom/alibaba/fastjson/util/FieldInfo;->getFieldClass()Ljava/lang/Class;
move-result-object v0
.line 259
.local v0, "clazz":Ljava/lang/Class;, "Ljava/lang/Class<*>;"
const-class v1, Ljava/lang/Number;
if-ne v0, v1, :cond_e
.line 260
new-instance v1, Lcom/alibaba/fastjson/serializer/NumberFieldSerializer;
invoke-direct {v1, p1}, Lcom/alibaba/fastjson/serializer/NumberFieldSerializer;-><init>(Lcom/alibaba/fastjson/util/FieldInfo;)V
return-object v1
.line 263
:cond_e
new-instance v1, Lcom/alibaba/fastjson/serializer/ObjectFieldSerializer;
invoke-direct {v1, p1}, Lcom/alibaba/fastjson/serializer/ObjectFieldSerializer;-><init>(Lcom/alibaba/fastjson/util/FieldInfo;)V
return-object v1
.end method
.method public getGetters()[Lcom/alibaba/fastjson/serializer/FieldSerializer;
.registers 2
.line 44
iget-object v0, p0, Lcom/alibaba/fastjson/serializer/JavaBeanSerializer;->getters:[Lcom/alibaba/fastjson/serializer/FieldSerializer;
return-object v0
.end method
.method public isWriteAsArray(Lcom/alibaba/fastjson/serializer/JSONSerializer;)Z
.registers 4
.param p1, "serializer" # Lcom/alibaba/fastjson/serializer/JSONSerializer;
.line 267
iget v0, p0, Lcom/alibaba/fastjson/serializer/JavaBeanSerializer;->features:I
sget-object v1, Lcom/alibaba/fastjson/serializer/SerializerFeature;->BeanToArray:Lcom/alibaba/fastjson/serializer/SerializerFeature;
invoke-static {v0, v1}, Lcom/alibaba/fastjson/serializer/SerializerFeature;->isEnabled(ILcom/alibaba/fastjson/serializer/SerializerFeature;)Z
move-result v0
if-eqz v0, :cond_c
.line 268
const/4 v0, 0x1
return v0
.line 272
:cond_c
sget-object v0, Lcom/alibaba/fastjson/serializer/SerializerFeature;->BeanToArray:Lcom/alibaba/fastjson/serializer/SerializerFeature;
invoke-virtual {p1, v0}, Lcom/alibaba/fastjson/serializer/JSONSerializer;->isEnabled(Lcom/alibaba/fastjson/serializer/SerializerFeature;)Z
move-result v0
if-eqz v0, :cond_16
.line 273
const/4 v0, 0x1
.local v0, "writeAsArray":Z
goto :goto_17
.line 275
.end local v0 # "writeAsArray":Z
:cond_16
const/4 v0, 0x0
.line 278
.restart local v0 # "writeAsArray":Z
:goto_17
return v0
.end method
.method protected isWriteClassName(Lcom/alibaba/fastjson/serializer/JSONSerializer;Ljava/lang/Object;Ljava/lang/reflect/Type;Ljava/lang/Object;)Z
.registers 6
.param p1, "serializer" # Lcom/alibaba/fastjson/serializer/JSONSerializer;
.param p2, "obj" # Ljava/lang/Object;
.param p3, "fieldType" # Ljava/lang/reflect/Type;
.param p4, "fieldName" # Ljava/lang/Object;
.line 90
invoke-virtual {p1, p3, p2}, Lcom/alibaba/fastjson/serializer/JSONSerializer;->isWriteClassName(Ljava/lang/reflect/Type;Ljava/lang/Object;)Z
move-result v0
return v0
.end method
.method public write(Lcom/alibaba/fastjson/serializer/JSONSerializer;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/reflect/Type;)V
.registers 28
.param p1, "serializer" # Lcom/alibaba/fastjson/serializer/JSONSerializer;
.param p2, "object" # Ljava/lang/Object;
.param p3, "fieldName" # Ljava/lang/Object;
.param p4, "fieldType" # Ljava/lang/reflect/Type;
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
.line 94
move-object/from16 v1, p0
move-object/from16 v2, p1
move-object/from16 v3, p2
move-object/from16 v4, p3
move-object/from16 v5, p4
invoke-virtual/range {p1 .. p1}, Lcom/alibaba/fastjson/serializer/JSONSerializer;->getWriter()Lcom/alibaba/fastjson/serializer/SerializeWriter;
move-result-object v6
.line 96
.local v6, "out":Lcom/alibaba/fastjson/serializer/SerializeWriter;
if-nez v3, :cond_14
.line 97
invoke-virtual {v6}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->writeNull()V
.line 98
return-void
.line 101
:cond_14
invoke-virtual/range {p0 .. p2}, Lcom/alibaba/fastjson/serializer/JavaBeanSerializer;->writeReference(Lcom/alibaba/fastjson/serializer/JSONSerializer;Ljava/lang/Object;)Z
move-result v0
if-eqz v0, :cond_1b
.line 102
return-void
.line 107
:cond_1b
sget-object v0, Lcom/alibaba/fastjson/serializer/SerializerFeature;->SortField:Lcom/alibaba/fastjson/serializer/SerializerFeature;
invoke-virtual {v6, v0}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->isEnabled(Lcom/alibaba/fastjson/serializer/SerializerFeature;)Z
move-result v0
if-eqz v0, :cond_27
.line 108
iget-object v0, v1, Lcom/alibaba/fastjson/serializer/JavaBeanSerializer;->sortedGetters:[Lcom/alibaba/fastjson/serializer/FieldSerializer;
move-object v7, v0
.local v0, "getters":[Lcom/alibaba/fastjson/serializer/FieldSerializer;
goto :goto_2a
.line 110
.end local v0 # "getters":[Lcom/alibaba/fastjson/serializer/FieldSerializer;
:cond_27
iget-object v0, v1, Lcom/alibaba/fastjson/serializer/JavaBeanSerializer;->getters:[Lcom/alibaba/fastjson/serializer/FieldSerializer;
move-object v7, v0
.line 113
.local v7, "getters":[Lcom/alibaba/fastjson/serializer/FieldSerializer;
:goto_2a
invoke-virtual/range {p1 .. p1}, Lcom/alibaba/fastjson/serializer/JSONSerializer;->getContext()Lcom/alibaba/fastjson/serializer/SerialContext;
move-result-object v8
.line 114
.local v8, "parent":Lcom/alibaba/fastjson/serializer/SerialContext;
iget v0, v1, Lcom/alibaba/fastjson/serializer/JavaBeanSerializer;->features:I
invoke-virtual {v2, v8, v3, v4, v0}, Lcom/alibaba/fastjson/serializer/JSONSerializer;->setContext(Lcom/alibaba/fastjson/serializer/SerialContext;Ljava/lang/Object;Ljava/lang/Object;I)V
.line 116
invoke-virtual/range {p0 .. p1}, Lcom/alibaba/fastjson/serializer/JavaBeanSerializer;->isWriteAsArray(Lcom/alibaba/fastjson/serializer/JSONSerializer;)Z
move-result v9
.line 119
.local v9, "writeAsArray":Z
if-eqz v9, :cond_3c
const/16 v0, 0x5b
goto :goto_3e
:cond_3c
const/16 v0, 0x7b
.line 120
.local v0, "startSeperator":C
:goto_3e
if-eqz v9, :cond_43
const/16 v10, 0x5d
goto :goto_45
:cond_43
const/16 v10, 0x7d
.line 121
.local v10, "endSeperator":C
:goto_45
:try_start_45
invoke-virtual {v6, v0}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->append(C)Lcom/alibaba/fastjson/serializer/SerializeWriter;
.line 123
array-length v11, v7
if-lez v11, :cond_59
sget-object v11, Lcom/alibaba/fastjson/serializer/SerializerFeature;->PrettyFormat:Lcom/alibaba/fastjson/serializer/SerializerFeature;
invoke-virtual {v6, v11}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->isEnabled(Lcom/alibaba/fastjson/serializer/SerializerFeature;)Z
move-result v11
if-eqz v11, :cond_59
.line 124
invoke-virtual/range {p1 .. p1}, Lcom/alibaba/fastjson/serializer/JSONSerializer;->incrementIndent()V
.line 125
invoke-virtual/range {p1 .. p1}, Lcom/alibaba/fastjson/serializer/JSONSerializer;->println()V
.line 128
:cond_59
const/4 v11, 0x0
.line 130
.local v11, "commaFlag":Z
invoke-virtual {v1, v2, v3, v5, v4}, Lcom/alibaba/fastjson/serializer/JavaBeanSerializer;->isWriteClassName(Lcom/alibaba/fastjson/serializer/JSONSerializer;Ljava/lang/Object;Ljava/lang/reflect/Type;Ljava/lang/Object;)Z
move-result v12
if-eqz v12, :cond_73
.line 131
invoke-virtual/range {p2 .. p2}, Ljava/lang/Object;->getClass()Ljava/lang/Class;
move-result-object v12
.line 132
.local v12, "objClass":Ljava/lang/Class;, "Ljava/lang/Class<*>;"
if-eq v12, v5, :cond_73
.line 133
sget-object v13, Lcom/alibaba/fastjson/JSON;->DEFAULT_TYPE_KEY:Ljava/lang/String;
invoke-virtual {v6, v13}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->writeFieldName(Ljava/lang/String;)V
.line 134
invoke-virtual/range {p2 .. p2}, Ljava/lang/Object;->getClass()Ljava/lang/Class;
move-result-object v13
invoke-virtual {v2, v13}, Lcom/alibaba/fastjson/serializer/JSONSerializer;->write(Ljava/lang/Object;)V
.line 135
const/4 v11, 0x1
.line 139
.end local v12 # "objClass":Ljava/lang/Class;, "Ljava/lang/Class<*>;"
:cond_73
const/16 v13, 0x2c
if-eqz v11, :cond_7a
const/16 v14, 0x2c
goto :goto_7b
:cond_7a
const/4 v14, 0x0
.line 141
.local v14, "seperator":C
:goto_7b
invoke-static {v2, v3, v14}, Lcom/alibaba/fastjson/serializer/FilterUtils;->writeBefore(Lcom/alibaba/fastjson/serializer/JSONSerializer;Ljava/lang/Object;C)C
move-result v15
.line 142
.local v15, "newSeperator":C
if-ne v15, v13, :cond_84
const/16 v16, 0x1
goto :goto_86
:cond_84
const/16 v16, 0x0
:goto_86
move/from16 v11, v16
.line 144
const/16 v16, 0x0
move/from16 v12, v16
.local v12, "i":I
:goto_8c
array-length v13, v7
if-ge v12, v13, :cond_1da
.line 145
aget-object v13, v7, v12
.line 147
.local v13, "fieldSerializer":Lcom/alibaba/fastjson/serializer/FieldSerializer;
move/from16 v17, v0
.end local v0 # "startSeperator":C
.local v17, "startSeperator":C
sget-object v0, Lcom/alibaba/fastjson/serializer/SerializerFeature;->SkipTransientField:Lcom/alibaba/fastjson/serializer/SerializerFeature;
invoke-virtual {v2, v0}, Lcom/alibaba/fastjson/serializer/JSONSerializer;->isEnabled(Lcom/alibaba/fastjson/serializer/SerializerFeature;)Z
move-result v0
if-eqz v0, :cond_ad
.line 148
invoke-virtual {v13}, Lcom/alibaba/fastjson/serializer/FieldSerializer;->getField()Ljava/lang/reflect/Field;
move-result-object v0
.line 149
.local v0, "field":Ljava/lang/reflect/Field;
if-eqz v0, :cond_ad
.line 150
invoke-virtual {v0}, Ljava/lang/reflect/Field;->getModifiers()I
move-result v18
invoke-static/range {v18 .. v18}, Ljava/lang/reflect/Modifier;->isTransient(I)Z
move-result v18
if-eqz v18, :cond_ad
.line 151
goto/16 :goto_18c
.line 156
.end local v0 # "field":Ljava/lang/reflect/Field;
:cond_ad
invoke-virtual {v13}, Lcom/alibaba/fastjson/serializer/FieldSerializer;->getName()Ljava/lang/String;
move-result-object v0
invoke-static {v2, v3, v0}, Lcom/alibaba/fastjson/serializer/FilterUtils;->applyName(Lcom/alibaba/fastjson/serializer/JSONSerializer;Ljava/lang/Object;Ljava/lang/String;)Z
move-result v0
if-nez v0, :cond_b9
.line 157
goto/16 :goto_18c
.line 160
:cond_b9
invoke-virtual {v13, v3}, Lcom/alibaba/fastjson/serializer/FieldSerializer;->getPropertyValue(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v0
.line 162
.local v0, "propertyValue":Ljava/lang/Object;
invoke-virtual {v13}, Lcom/alibaba/fastjson/serializer/FieldSerializer;->getName()Ljava/lang/String;
move-result-object v1
invoke-static {v2, v3, v1, v0}, Lcom/alibaba/fastjson/serializer/FilterUtils;->apply(Lcom/alibaba/fastjson/serializer/JSONSerializer;Ljava/lang/Object;Ljava/lang/String;Ljava/lang/Object;)Z
move-result v1
if-nez v1, :cond_c9
.line 163
goto/16 :goto_18c
.line 166
:cond_c9
invoke-virtual {v13}, Lcom/alibaba/fastjson/serializer/FieldSerializer;->getName()Ljava/lang/String;
move-result-object v1
invoke-static {v2, v3, v1, v0}, Lcom/alibaba/fastjson/serializer/FilterUtils;->processKey(Lcom/alibaba/fastjson/serializer/JSONSerializer;Ljava/lang/Object;Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/String;
move-result-object v1
.line 168
.local v1, "key":Ljava/lang/String;
move-object/from16 v18, v0
.line 169
.local v18, "originalValue":Ljava/lang/Object;
invoke-virtual {v13}, Lcom/alibaba/fastjson/serializer/FieldSerializer;->getName()Ljava/lang/String;
move-result-object v4
invoke-static {v2, v3, v4, v0}, Lcom/alibaba/fastjson/serializer/FilterUtils;->processValue(Lcom/alibaba/fastjson/serializer/JSONSerializer;Ljava/lang/Object;Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v4
move-object v0, v4
.line 171
if-nez v0, :cond_f0
if-nez v9, :cond_f0
.line 172
invoke-virtual {v13}, Lcom/alibaba/fastjson/serializer/FieldSerializer;->isWriteNull()Z
move-result v4
if-nez v4, :cond_f0
sget-object v4, Lcom/alibaba/fastjson/serializer/SerializerFeature;->WriteMapNullValue:Lcom/alibaba/fastjson/serializer/SerializerFeature;
invoke-virtual {v2, v4}, Lcom/alibaba/fastjson/serializer/JSONSerializer;->isEnabled(Lcom/alibaba/fastjson/serializer/SerializerFeature;)Z
move-result v4
if-nez v4, :cond_f0
.line 174
goto/16 :goto_18c
.line 178
:cond_f0
if-eqz v0, :cond_18f
sget-object v4, Lcom/alibaba/fastjson/serializer/SerializerFeature;->NotWriteDefaultValue:Lcom/alibaba/fastjson/serializer/SerializerFeature;
invoke-virtual {v2, v4}, Lcom/alibaba/fastjson/serializer/JSONSerializer;->isEnabled(Lcom/alibaba/fastjson/serializer/SerializerFeature;)Z
move-result v4
if-eqz v4, :cond_18f
.line 179
iget-object v4, v13, Lcom/alibaba/fastjson/serializer/FieldSerializer;->fieldInfo:Lcom/alibaba/fastjson/util/FieldInfo;
invoke-virtual {v4}, Lcom/alibaba/fastjson/util/FieldInfo;->getFieldClass()Ljava/lang/Class;
move-result-object v4
.line 180
.local v4, "fieldCLass":Ljava/lang/Class;, "Ljava/lang/Class<*>;"
sget-object v5, Ljava/lang/Byte;->TYPE:Ljava/lang/Class;
if-ne v4, v5, :cond_113
instance-of v5, v0, Ljava/lang/Byte;
if-eqz v5, :cond_113
move-object v5, v0
check-cast v5, Ljava/lang/Byte;
invoke-virtual {v5}, Ljava/lang/Byte;->byteValue()B
move-result v5
if-nez v5, :cond_113
.line 181
goto/16 :goto_18c
.line 182
:cond_113
sget-object v5, Ljava/lang/Short;->TYPE:Ljava/lang/Class;
if-ne v4, v5, :cond_126
instance-of v5, v0, Ljava/lang/Short;
if-eqz v5, :cond_126
move-object v5, v0
check-cast v5, Ljava/lang/Short;
invoke-virtual {v5}, Ljava/lang/Short;->shortValue()S
move-result v5
if-nez v5, :cond_126
.line 183
goto/16 :goto_18c
.line 184
:cond_126
sget-object v5, Ljava/lang/Integer;->TYPE:Ljava/lang/Class;
if-ne v4, v5, :cond_138
instance-of v5, v0, Ljava/lang/Integer;
if-eqz v5, :cond_138
move-object v5, v0
check-cast v5, Ljava/lang/Integer;
invoke-virtual {v5}, Ljava/lang/Integer;->intValue()I
move-result v5
if-nez v5, :cond_138
.line 185
goto :goto_18c
.line 186
:cond_138
sget-object v5, Ljava/lang/Long;->TYPE:Ljava/lang/Class;
if-ne v4, v5, :cond_14e
instance-of v5, v0, Ljava/lang/Long;
if-eqz v5, :cond_14e
move-object v5, v0
check-cast v5, Ljava/lang/Long;
invoke-virtual {v5}, Ljava/lang/Long;->longValue()J
move-result-wide v19
const-wide/16 v21, 0x0
cmp-long v5, v19, v21
if-nez v5, :cond_14e
.line 187
goto :goto_18c
.line 188
:cond_14e
sget-object v5, Ljava/lang/Float;->TYPE:Ljava/lang/Class;
if-ne v4, v5, :cond_164
instance-of v5, v0, Ljava/lang/Float;
if-eqz v5, :cond_164
move-object v5, v0
check-cast v5, Ljava/lang/Float;
invoke-virtual {v5}, Ljava/lang/Float;->floatValue()F
move-result v5
const/16 v19, 0x0
cmpl-float v5, v5, v19
if-nez v5, :cond_164
.line 189
goto :goto_18c
.line 190
:cond_164
sget-object v5, Ljava/lang/Double;->TYPE:Ljava/lang/Class;
if-ne v4, v5, :cond_17a
instance-of v5, v0, Ljava/lang/Double;
if-eqz v5, :cond_17a
move-object v5, v0
check-cast v5, Ljava/lang/Double;
invoke-virtual {v5}, Ljava/lang/Double;->doubleValue()D
move-result-wide v19
const-wide/16 v21, 0x0
cmpl-double v5, v19, v21
if-nez v5, :cond_17a
.line 191
goto :goto_18c
.line 192
:cond_17a
sget-object v5, Ljava/lang/Boolean;->TYPE:Ljava/lang/Class;
if-ne v4, v5, :cond_18f
instance-of v5, v0, Ljava/lang/Boolean;
if-eqz v5, :cond_18f
move-object v5, v0
check-cast v5, Ljava/lang/Boolean;
invoke-virtual {v5}, Ljava/lang/Boolean;->booleanValue()Z
move-result v5
if-nez v5, :cond_18f
.line 193
nop
.line 144
.end local v0 # "propertyValue":Ljava/lang/Object;
.end local v1 # "key":Ljava/lang/String;
.end local v4 # "fieldCLass":Ljava/lang/Class;, "Ljava/lang/Class<*>;"
.end local v13 # "fieldSerializer":Lcom/alibaba/fastjson/serializer/FieldSerializer;
.end local v18 # "originalValue":Ljava/lang/Object;
:goto_18c
const/16 v4, 0x2c
goto :goto_1cc
.line 197
.restart local v0 # "propertyValue":Ljava/lang/Object;
.restart local v1 # "key":Ljava/lang/String;
.restart local v13 # "fieldSerializer":Lcom/alibaba/fastjson/serializer/FieldSerializer;
.restart local v18 # "originalValue":Ljava/lang/Object;
:cond_18f
if-eqz v11, :cond_1a2
.line 198
const/16 v4, 0x2c
invoke-virtual {v6, v4}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->append(C)Lcom/alibaba/fastjson/serializer/SerializeWriter;
.line 199
sget-object v5, Lcom/alibaba/fastjson/serializer/SerializerFeature;->PrettyFormat:Lcom/alibaba/fastjson/serializer/SerializerFeature;
invoke-virtual {v6, v5}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->isEnabled(Lcom/alibaba/fastjson/serializer/SerializerFeature;)Z
move-result v5
if-eqz v5, :cond_1a4
.line 200
invoke-virtual/range {p1 .. p1}, Lcom/alibaba/fastjson/serializer/JSONSerializer;->println()V
goto :goto_1a4
.line 197
:cond_1a2
const/16 v4, 0x2c
.line 204
:cond_1a4
:goto_1a4
invoke-virtual {v13}, Lcom/alibaba/fastjson/serializer/FieldSerializer;->getName()Ljava/lang/String;
move-result-object v5
if-eq v1, v5, :cond_1b5
.line 205
if-nez v9, :cond_1af
.line 206
invoke-virtual {v6, v1}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->writeFieldName(Ljava/lang/String;)V
.line 208
:cond_1af
invoke-virtual {v2, v0}, Lcom/alibaba/fastjson/serializer/JSONSerializer;->write(Ljava/lang/Object;)V
move-object/from16 v5, v18
goto :goto_1cb
.line 209
:cond_1b5
move-object/from16 v5, v18
.end local v18 # "originalValue":Ljava/lang/Object;
.local v5, "originalValue":Ljava/lang/Object;
if-eq v5, v0, :cond_1c2
.line 210
if-nez v9, :cond_1be
.line 211
invoke-virtual {v13, v2}, Lcom/alibaba/fastjson/serializer/FieldSerializer;->writePrefix(Lcom/alibaba/fastjson/serializer/JSONSerializer;)V
.line 213
:cond_1be
invoke-virtual {v2, v0}, Lcom/alibaba/fastjson/serializer/JSONSerializer;->write(Ljava/lang/Object;)V
goto :goto_1cb
.line 215
:cond_1c2
if-nez v9, :cond_1c8
.line 216
invoke-virtual {v13, v2, v0}, Lcom/alibaba/fastjson/serializer/FieldSerializer;->writeProperty(Lcom/alibaba/fastjson/serializer/JSONSerializer;Ljava/lang/Object;)V
goto :goto_1cb
.line 218
:cond_1c8
invoke-virtual {v13, v2, v0}, Lcom/alibaba/fastjson/serializer/FieldSerializer;->writeValue(Lcom/alibaba/fastjson/serializer/JSONSerializer;Ljava/lang/Object;)V
.line 222
:goto_1cb
const/4 v11, 0x1
.line 144
.end local v0 # "propertyValue":Ljava/lang/Object;
.end local v1 # "key":Ljava/lang/String;
.end local v5 # "originalValue":Ljava/lang/Object;
.end local v13 # "fieldSerializer":Lcom/alibaba/fastjson/serializer/FieldSerializer;
:goto_1cc
add-int/lit8 v12, v12, 0x1
move-object/from16 v1, p0
move-object/from16 v4, p3
move-object/from16 v5, p4
move/from16 v0, v17
const/16 v13, 0x2c
goto/16 :goto_8c
.end local v17 # "startSeperator":C
.local v0, "startSeperator":C
:cond_1da
move/from16 v17, v0
const/16 v4, 0x2c
.line 225
.end local v0 # "startSeperator":C
.end local v12 # "i":I
.restart local v17 # "startSeperator":C
if-eqz v11, :cond_1e3
const/16 v12, 0x2c
goto :goto_1e4
:cond_1e3
const/4 v12, 0x0
:goto_1e4
invoke-static {v2, v3, v12}, Lcom/alibaba/fastjson/serializer/FilterUtils;->writeAfter(Lcom/alibaba/fastjson/serializer/JSONSerializer;Ljava/lang/Object;C)C
.line 227
array-length v0, v7
if-lez v0, :cond_1f8
sget-object v0, Lcom/alibaba/fastjson/serializer/SerializerFeature;->PrettyFormat:Lcom/alibaba/fastjson/serializer/SerializerFeature;
invoke-virtual {v6, v0}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->isEnabled(Lcom/alibaba/fastjson/serializer/SerializerFeature;)Z
move-result v0
if-eqz v0, :cond_1f8
.line 228
invoke-virtual/range {p1 .. p1}, Lcom/alibaba/fastjson/serializer/JSONSerializer;->decrementIdent()V
.line 229
invoke-virtual/range {p1 .. p1}, Lcom/alibaba/fastjson/serializer/JSONSerializer;->println()V
.line 232
:cond_1f8
invoke-virtual {v6, v10}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->append(C)Lcom/alibaba/fastjson/serializer/SerializeWriter;
:try_end_1fb
.catch Ljava/lang/Exception; {:try_start_45 .. :try_end_1fb} :catch_203
.catchall {:try_start_45 .. :try_end_1fb} :catchall_201
.line 236
nop
.end local v10 # "endSeperator":C
.end local v11 # "commaFlag":Z
.end local v14 # "seperator":C
.end local v15 # "newSeperator":C
.end local v17 # "startSeperator":C
invoke-virtual {v2, v8}, Lcom/alibaba/fastjson/serializer/JSONSerializer;->setContext(Lcom/alibaba/fastjson/serializer/SerialContext;)V
.line 237
nop
.line 238
return-void
.line 236
:catchall_201
move-exception v0
goto :goto_20d
.line 233
:catch_203
move-exception v0
.line 234
.local v0, "e":Ljava/lang/Exception;
:try_start_204
new-instance v1, Lcom/alibaba/fastjson/JSONException;
const-string/jumbo v4, "write javaBean error"
invoke-direct {v1, v4, v0}, Lcom/alibaba/fastjson/JSONException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V
.end local v6 # "out":Lcom/alibaba/fastjson/serializer/SerializeWriter;
.end local v7 # "getters":[Lcom/alibaba/fastjson/serializer/FieldSerializer;
.end local v8 # "parent":Lcom/alibaba/fastjson/serializer/SerialContext;
.end local v9 # "writeAsArray":Z
.end local p1 # "serializer":Lcom/alibaba/fastjson/serializer/JSONSerializer;
.end local p2 # "object":Ljava/lang/Object;
.end local p3 # "fieldName":Ljava/lang/Object;
.end local p4 # "fieldType":Ljava/lang/reflect/Type;
throw v1
:try_end_20d
.catchall {:try_start_204 .. :try_end_20d} :catchall_201
.line 236
.end local v0 # "e":Ljava/lang/Exception;
.restart local v6 # "out":Lcom/alibaba/fastjson/serializer/SerializeWriter;
.restart local v7 # "getters":[Lcom/alibaba/fastjson/serializer/FieldSerializer;
.restart local v8 # "parent":Lcom/alibaba/fastjson/serializer/SerialContext;
.restart local v9 # "writeAsArray":Z
.restart local p1 # "serializer":Lcom/alibaba/fastjson/serializer/JSONSerializer;
.restart local p2 # "object":Ljava/lang/Object;
.restart local p3 # "fieldName":Ljava/lang/Object;
.restart local p4 # "fieldType":Ljava/lang/reflect/Type;
:goto_20d
invoke-virtual {v2, v8}, Lcom/alibaba/fastjson/serializer/JSONSerializer;->setContext(Lcom/alibaba/fastjson/serializer/SerialContext;)V
goto :goto_212
:goto_211
throw v0
:goto_212
goto :goto_211
.end method
.method public writeReference(Lcom/alibaba/fastjson/serializer/JSONSerializer;Ljava/lang/Object;)Z
.registers 6
.param p1, "serializer" # Lcom/alibaba/fastjson/serializer/JSONSerializer;
.param p2, "object" # Ljava/lang/Object;
.line 242
invoke-virtual {p1}, Lcom/alibaba/fastjson/serializer/JSONSerializer;->getContext()Lcom/alibaba/fastjson/serializer/SerialContext;
move-result-object v0
.line 243
.local v0, "context":Lcom/alibaba/fastjson/serializer/SerialContext;
const/4 v1, 0x0
if-eqz v0, :cond_10
sget-object v2, Lcom/alibaba/fastjson/serializer/SerializerFeature;->DisableCircularReferenceDetect:Lcom/alibaba/fastjson/serializer/SerializerFeature;
invoke-virtual {v0, v2}, Lcom/alibaba/fastjson/serializer/SerialContext;->isEnabled(Lcom/alibaba/fastjson/serializer/SerializerFeature;)Z
move-result v2
if-eqz v2, :cond_10
.line 244
return v1
.line 248
.end local v0 # "context":Lcom/alibaba/fastjson/serializer/SerialContext;
:cond_10
invoke-virtual {p1, p2}, Lcom/alibaba/fastjson/serializer/JSONSerializer;->containsReference(Ljava/lang/Object;)Z
move-result v0
if-nez v0, :cond_17
.line 249
return v1
.line 252
:cond_17
invoke-virtual {p1, p2}, Lcom/alibaba/fastjson/serializer/JSONSerializer;->writeReference(Ljava/lang/Object;)V
.line 253
const/4 v0, 0x1
return v0
.end method