JSON解析工具学习
2017-11-25 00:00
246 查看
各个JSON技术的简介和优劣
http://blog.csdn.net/bingducaijun/article/details/51811367
GsonBuilder类
JSONSerializer
SerializeConfig
使用ASM来创建ASMSerializer_1_Person 针对Person类的Serializer
http://blog.csdn.net/bingducaijun/article/details/51811367
Gson学习
<dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.8.0</version> </dependency>
GsonBuilder类
// serializeNulls()对空值的对象也进行打印 System.out.println(new GsonBuilder().serializeNulls().create().toJson(map)); // {"23":null,"223":2} System.out.println(new GsonBuilder().create().toJson(map)); // {"223":2} map.put("2231", 123); // setPrettyPrinting()不移除空白 保留json打印格式 System.out.println(new GsonBuilder().setPrettyPrinting().create().toJson(map)); /** { "223": 2, "2231": 123 } */ System.out.println(new GsonBuilder().create().toJson(map)); // {"223":2,"2231":123} // 自定义序列化 System.out.println(new GsonBuilder().registerTypeAdapter(Long.class, new JsonSerializer() { @Override public JsonElement serialize(Object src, Type typeOfSrc, JsonSerializationContext context) { // java8 lambda表达式 入参类型必须是接口 System.out.println(typeOfSrc); // class java.lang.Long System.out.println(src); // 2 System.out.println(context); // com.google.gson.internal.bind.TreeTypeAdapter$GsonContextImpl@b5c224 return new JsonPrimitive(String.valueOf(src)); } }).create().toJson(new Person(2L, "Mary", 21, Gender.女, null))); // {"id":"2","name":"Mary","age":21,"gender":"女"} System.out.println(new GsonBuilder().setDateFormat("yyyy-MM-dd HH:mm:ss").create().toJson(new Person(2L, "Mary", 21, Gender.女, new Date(), null))); // {"id":2,"name":"Mary","age":21,"gender":"女","birthday":"2017-11-27 14:44:23"} // excludeFieldsWithoutExposeAnnotation()表示只序列化被com.google.gson.annotations.Expose注解标记的字段 System.out.println(new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create().toJson(new Person(2L, "Mary", 21, Gender.女, new Date(), null))); // setVersion(1.0)表示当前版本号 @Since(1.1)标记后表示只有在版本号大于等于1.1的情况去序列化 System.out.println(new GsonBuilder().setVersion(1.0).create().toJson(new Person(2L, "Mary", 21, Gender.女, new Date(), null))); // 默认忽略static和transient修饰的字段 使用excludeFieldsWithModifiers去修改 System.out.println(new GsonBuilder().excludeFieldsWithModifiers(Modifier.PRIVATE | Modifier.TRANSIENT | Modifier.STATIC).create().toJson(new Person(2L, "Mary", 21, Gender.女, new Date(), null))); // 对枚举类的自定义序列化 System.out.println(new GsonBuilder().registerTypeHierarchyAdapter(Enum.class, new JsonSerializer() { @Override public JsonElement serialize(Object src, Type typeOfSrc, JsonSerializationContext context) { System.out.println(src); System.out.println(typeOfSrc); return new JsonPrimitive(src.toString()); } }).create().toJson(new Person(2L, "Mary", 21, Gender.女, new Date(), null))); // 使用注解@SerializedName("m")标记枚举 System.out.println(new GsonBuilder().create().toJson(new Person(2L, "Mary", 21, Gender.女, new Date(), null)));
public static class Person { private Long id; @Expose String name; @Since(1.1) Integer age; @Since(1.0) Gender gender; @Since(1.0) transient Date birthday; Person wife; public Person(Long id, String name, Integer age, Gender gender, Date birthday, Person wife) { this.id = id; this.name = name; this.age = age; this.gender = gender; this.birthday = birthday; this.wife = 7fe0 wife; } public Person(Long id, String name, Integer age, Gender gender, Person wife) { this.id = id; this.name = name; this.age = age; this.gender = gender; this.wife = wife; } } public enum Gender { 男, 女; @Override public String toString() { if (this.name().equals("男")) return "man"; if (this.name().equals("女")) return "woman"; return super.toString(); } }
fastjson
<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.41</version> </dependency>
public static void main(String[] args) { String s = JSON.toJSONString(new Person(2111111111111111111L, "Mary", 21, Gender.女, new Date(), null), SerializerFeature.WriteEnumUsingToString, SerializerFeature.WriteMapNullValue, SerializerFeature.BrowserCompatible); System.out.println(s); }
public static String toJSONString(Object object, SerializerFeature... features) { return toJSONString(object, DEFAULT_GENERATE_FEATURE, features); }
public static String toJSONString(Object object, int defaultFeatures, SerializerFeature... features) { // 对feature做解析 SerializeWriter out = new SerializeWriter((Writer) null, defaultFeatures, features); try { JSONSerializer serializer = new JSONSerializer(out); serializer.write(object); // 查看这个方法 return out.toString(); } finally { out.close(); } }
JSONSerializer
public final void write(Object object) { if (object == null) { out.writeNull(); return; } Class<?> clazz = object.getClass(); // 根据对象类型获取获取ObjectSerializer ObjectSerializer writer = getObjectWriter(clazz); // 查看这个方法 try { writer.write(this, object, null, null, 0); } catch (IOException e) { throw new JSONException(e.getMessage(), e); } }
public ObjectSerializer getObjectWriter(Class<?> clazz) { return config.getObjectWriter(clazz); }
SerializeConfig
public ObjectSerializer getObjectWriter(Class<?> clazz) { return getObjectWriter(clazz, true); }
private ObjectSerializer getObjectWriter(Class<?> clazz, boolean create) { ObjectSerializer writer = serializers.get(clazz); if (writer == null) { ... } if (writer == null) { ... } if (writer == null) { String className = clazz.getName(); Class<?> superClass; //一些常见类型的Serializer获取 if (Map.class.isAssignableFrom(clazz)) { put(clazz, writer = MapSerializer.instance); } else if (List.class.isAssignableFrom(clazz)) { put(clazz, writer = ListSerializer.instance); } ....... else { if (className.startsWith("java.awt.") // && AwtCodec.support(clazz) // ) { ... } // jdk8 if ((!jdk8Error) // && (className.startsWith("java.time.") // || className.startsWith("java.util.Optional") // || className.equals("java.util.concurrent.atomic.LongAdder") || className.equals("java.util.concurrent.atomic.DoubleAdder") )) { .... } if ((!oracleJdbcError) // && className.startsWith("oracle.sql.")) { ... } if ((!springfoxError) // && className.equals("springfox.documentation.spring.web.json.Json")) { ... } if ((!guavaError) // && className.startsWith("com.google.common.collect.")) { ... } if ((!jsonnullError) && className.equals("net.sf.json.JSONNull")) { ... } Class[] interfaces = clazz.getInterfaces(); if (interfaces.length == 1 && interfaces[0].isAnnotation()) { return AnnotationSerializer.instance; } if (TypeUtils.isProxy(clazz)) { Class<?> superClazz = clazz.getSuperclass(); ObjectSerializer superWriter = getObjectWriter(superClazz); put(clazz, superWriter); return superWriter; } if (Proxy.isProxyClass(clazz)) { ... } if (create) { writer = createJavaBeanSerializer(clazz); // 回去创建一个Serializer put(clazz, writer); } } if (writer == null) { writer = serializers.get(clazz); } } return writer; }
使用ASM来创建ASMSerializer_1_Person 针对Person类的Serializer
// // Source code recreated from a .class file by IntelliJ IDEA // (powered by Fernflower decompiler) // package com.alibaba.fastjson.serializer; import com.alibaba.fastjson.util.ASMUtils; import fastjson.Gender; import fastjson.Person; import java.io.IOException; import java.lang.reflect.Type; import java.util.Date; public class ASMSerializer_1_Person extends JavaBeanSerializer implements ObjectSerializer { public Type age_asm_fieldType = ASMUtils.getMethodType(Person.class, "getAge"); public ObjectSerializer age_asm_ser_; public Type birthday_asm_fieldType = ASMUtils.getMethodType(Person.class, "getBirthday"); public ObjectSerializer birthday_asm_ser_; public Type gender_asm_fieldType = ASMUtils.getMethodType(Person.class, "getGender"); public ObjectSerializer gender_asm_ser_; public Type id_asm_fieldType = ASMUtils.getMethodType(Person.class, "getId"); public ObjectSerializer id_asm_ser_; public Type wife_asm_fieldType = ASMUtils.getMethodType(Person.class, "getWife"); public ObjectSerializer wife_asm_ser_; public ASMSerializer_1_Person(SerializeBeanInfo var1) { super(var1); } public void write(JSONSerializer var1, Object var2, Object var3, Type var4, int var5) throws IOException { if(var2 == null) { var1.writeNull(); } else { SerializeWriter var9 = var1.out; if(!this.writeDirect(var1)) { this.writeNormal(var1, var2, var3, var4, var5); } else if(var9.isEnabled('耀')) { this.writeDirectNonContext(var1, var2, var3, var4, var5); } else { Person var10 = (Person)var2; if(!this.writeReference(var1, var2, var5)) { if(var9.isEnabled(2097152)) { this.writeAsArray(var1, var2, var3, var4, var5); } else { SerialContext var11 = var1.getContext(); var1.setContext(var11, var2, var3, 0); char var12 = 123; String var6 = "age"; Integer var13 = var10.getAge(); if(var13 == null) { if(var9.isEnabled(260)) { var9.write(var12); var9.writeFieldNameDirect(var6); var9.writeNull(0, 256); var12 = 44; } } else { var9.write(var12); var9.writeFieldNameDirect(var6); var1.writeWithFieldName(var13, var6, this.age_asm_fieldType, 0); var12 = 44; } var6 = "birthday"; Date var19 = var10.getBirthday(); if(var19 == null) { if(var9.isEnabled(964)) { var9.write(var12); var9.writeFieldNameDirect(var6); var9.writeNull(0, 0); var12 = 44; } } else { var9.write(var12); var9.writeFieldNameDirect(var6); var1.writeWithFieldName(var19, var6, this.birthday_asm_fieldType, 0); var12 = 44; } var6 = "gender"; Enum var14 = (Enum)var10.getGender(); if(var14 == null) { if(var9.isEnabled(964)) { var9.write(var12); var9.writeFieldNameDirect(var6); var9.writeNull(0, 0); var12 = 44; } } else { var9.writeFieldValueStringWithDoubleQuote(var12, var6, var14.name()); var12 = 44; } var6 = "id"; Long var20 = var10.getId(); if(var20 == null) { if(var9.isEnabled(260)) { var9.write(var12); var9.writeFieldNameDirect(var6); var9.writeNull(0, 256); var12 = 44; } } else { var9.write(var12); var9.writeFieldNameDirect(var6); var1.writeWithFieldName(var20, var6, this.id_asm_fieldType, 0); var12 = 44; } var6 = "name"; String var15 = var10.getName(); if(var15 == null) { if(var9.isEnabled(132)) { var9.write(var12); var9.writeFieldNameDirect(var6); var9.writeNull(0, 128); var12 = 44; } } else { var9.writeFieldValueStringWithDoubleQuoteCheck(var12, var6, var15); var12 = 44; } var6 = "wife"; Person var21 = var10.getWife(); if(var21 == null) { if(var9.isEnabled(964)) { var9.write(var12); var9.writeFieldNameDirect(var6); var9.writeNull(0, 0); var12 = 44; } } else { var9.write(var12); var9.writeFieldNameDirect(var6); if(var21.getClass() == Person.class) { if(this.wife_asm_ser_ == null) { this.wife_asm_ser_ = var1.getObjectWriter(Person.class); } ObjectSerializer var16 = this.wife_asm_ser_; if(var16 instanceof JavaBeanSerializer) { ((JavaBeanSerializer)var16).write(var1, var21, var6, this.wife_asm_fieldType, 0); } else { var16.write(var1, var21, var6, this.wife_asm_fieldType, 0); } } else { var1.writeWithFieldName(var21, var6, this.wife_asm_fieldType, 0); } var12 = 44; } if(var12 == 123) { var9.write(123); } var9.write(125); var1.setContext(var11); } } } } } public void writeNormal(JSONSerializer var1, Object var2, Object var3, Type var4, int var5) throws IOException { if(var2 == null) { var1.writeNull(); } else { SerializeWriter var9 = var1.out; if(!var9.isSortField()) { this.writeUnsorted(var1, var2, var3, var4, var5); } else { Person var10 = (Person)var2; if(!var9.isEnabled(8192) && !var9.isEnabled(134217728)) { if(!this.writeReference(var1, var2, var5)) { if(var9.isEnabled(2097152)) { this.writeAsArrayNormal(var1, var2, var3, var4, var5); } else { SerialContext var11 = var1.getContext(); var1.setContext(var11, var2, var3, 0); byte var10000; if(var1.isWriteClassName(var4, var2) && var4 != var2.getClass()) { var9.write(123); this.writeClassName(var1, (String)null, var2); var10000 = 44; } else { var10000 = 123; } char var12 = (char)var10000; char var22 = this.writeBefore(var1, var2, var12); boolean var13 = var9.isNotWriteDefaultValue(); var1.checkValue(this); boolean var15 = var1.hasNameFilters(this); String var6 = "age"; Object var8; if(this.applyName(var1, var2, var6) && this.applyLabel(var1, "")) { Integer var16 = var10.getAge(); if(var13) { ; } if(this.apply(var1, var2, var6, var16)) { if(var15) { var6 = this.processKey(var1, var2, var6, var16); } var8 = this.processValue(var1, this.getBeanContext(0), var2, var6, var16); if(var16 != var8) { if(var8 == null) { if(var9.isEnabled(260)) { var9.write(var22); var9.writeFieldName(var6, false); var9.writeNull(0, 256); var22 = 44; } } else { var9.write(var22); var9.writeFieldName(var6, false); var1.writeWithFieldName(var8, var6, this.age_asm_fieldType, 0); var22 = 44; } } else if(var8 == null) { if(var9.isEnabled(260)) { var9.write(var22); var9.writeFieldName(var6, false); var9.writeNull(0, 256); var22 = 44; } } else { var9.write(var22); var9.writeFieldName(var6, false); var1.writeWithFieldName(var8, var6, this.age_asm_fieldType, 0); var22 = 44; } } } var6 = "birthday"; if(this.applyName(var1, var2, var6) && this.applyLabel(var1, "")) { Date var23 = var10.getBirthday(); if(var13) { ; } if(this.apply(var1, var2, var6, var23)) { if(var15) { var6 = this.processKey(var1, var2, var6, var23); } var8 = this.processValue(var1, this.getBeanContext(1), var2, var6, var23); if(var23 != var8) { if(var8 == null) { if(var9.isEnabled(964)) { var9.write(var22); var9.writeFieldName(var6, false); var9.writeNull(0, 0); var22 = 44; } } else { var9.write(var22); var9.writeFieldName(var6, false); var1.writeWithFieldName(var8, var6, this.birthday_asm_fieldType, 0); var22 = 44; } } else if(var8 == null) { if(var9.isEnabled(964)) { var9.write(var22); var9.writeFieldName(var6, false); var9.writeNull(0, 0); var22 = 44; } } else { var9.write(var22); var9.writeFieldName(var6, false); var1.writeWithFieldName(var8, var6, this.birthday_asm_fieldType, 0); var22 = 44; } } } var6 = "gender"; if(this.applyName(var1, var2, var6) && this.applyLabel(var1, "")) { Enum var17 = (Enum)var10.getGender(); if(var13) { ; } if(this.apply(var1, var2, var6, var17)) { if(var15) { var6 = this.processKey(var1, var2, var6, var17); } var8 = this.processValue(var1, this.getBeanContext(2), var2, var6, var17); if(var17 != var8) { if(var8 == null) { if(var9.isEnabled(964)) { var9.write(var22); var9.writeFieldName(var6, false); var9.writeNull(0, 0); var22 = 44; } } else { var9.write(var22); var9.writeFieldName(var6, false); var1.writeWithFieldName(var8, var6, this.gender_asm_fieldType, 0); var22 = 44; } } else if(var17 == null) { if(var9.isEnabled(964)) { var9.write(var22); var9.writeFieldName(var6, false); var9.writeNull(0, 0); var22 = 44; } } else { var9.write(var22); var9.writeFieldName(var6, false); var1.writeWithFieldName(var17, var6, Gender.class, 0); var22 = 44; } } } var6 = "id"; if(this.applyName(var1, var2, var6) && this.applyLabel(var1, "")) { Long var24 = var10.getId(); if(var13) { ; } if(this.apply(var1, var2, var6, var24)) { if(var15) { var6 = this.processKey(var1, var2, var6, var24); } var8 = this.processValue(var1, this.getBeanContext(3), var2, var6, var24); if(var24 != var8) { if(var8 == null) { if(var9.isEnabled(260)) { var9.write(var22); var9.writeFieldName(var6, false); var9.writeNull(0, 256); var22 = 44; } } else { var9.write(var22); var9.writeFieldName(var6, false); var1.writeWithFieldName(var8, var6, this.id_asm_fieldType, 0); var22 = 44; } } else if(var8 == null) { if(var9.isEnabled(260)) { var9.write(var22); var9.writeFieldName(var6, false); var9.writeNull(0, 256); var22 = 44; } } else { var9.write(var22); var9.writeFieldName(var6, false); var1.writeWithFieldName(var8, var6, this.id_asm_fieldType, 0); var22 = 44; } } } var6 = "name"; if(this.applyName(var1, var2, var6) && this.applyLabel(var1, "")) { String var18 = var10.getName(); if(var13) { ; } if(this.apply(var1, var2, var6, var18)) { if(var15) { var6 = this.processKey(var1, var2, var6, var18); } var8 = this.processValue(var1, this.getBeanContext(4), var2, var6, var18); if(var18 != var8) { if(var8 == null) { if(var9.isEnabled(132)) { var9.write(var22); var9.writeFieldName(var6, false); var9.writeNull(0, 128); var22 = 44; } } else { var9.write(var22); var9.writeFieldName(var6, false); var1.writeWithFieldName(var8, var6, String.class, 0); var22 = 44; } } else if(var18 == null) { if(var9.isEnabled(132)) { var9.write(var22); var9.writeFieldName(var6, false); var9.writeNull(0, 128); var22 = 44; } } else { var9.writeFieldValue(var22, var6, var18); var22 = 44; } } } var6 = "wife"; if(this.applyName(var1, var2, var6) && this.applyLabel(var1, "")) { Person var25 = var10.getWife(); if(var13) { ; } if(this.apply(var1, var2, var6, var25)) { if(var15) { var6 = this.processKey(var1, var2, var6, var25); } var8 = this.processValue(var1, this.getBeanContext(5), var2, var6, var25); ObjectSerializer var19; if(var25 != var8) { if(var8 == null) { if(var9.isEnabled(964)) { var9.write(var22); var9.writeFieldName(var6, false); var9.writeNull(0, 0); var22 = 44; } } else { var9.write(var22); var9.writeFieldName(var6, false); if(var8.getClass() == Person.class) { if(this.wife_asm_ser_ == null) { this.wife_asm_ser_ = var1.getObjectWriter(Person.class); } var19 = this.wife_asm_ser_; if(var19 instanceof JavaBeanSerializer) { ((JavaBeanSerializer)var19).write(var1, var8, var6, this.wife_asm_fieldType, 0); } else { var19.write(var1, var8, var6, this.wife_asm_fieldType, 0); } } else { var1.writeWithFieldName(var8, var6, this.wife_asm_fieldType, 0); } var22 = 44; } } else if(var8 == null) { if(var9.isEnabled(964)) { var9.write(var22); var9.writeFieldName(var6, false); var9.writeNull(0, 0); var22 = 44; } } else { var9.write(var22); var9.writeFieldName(var6, false); if(var8.getClass() == Person.class) { if(this.wife_asm_ser_ == null) { this.wife_asm_ser_ = var1.getObjectWriter(Person.class); } var19 = this.wife_asm_ser_; if(var19 instanceof JavaBeanSerializer) { ((JavaBeanSerializer)var19).write(var1, var8, var6, this.wife_asm_fieldType, 0); } else { var19.write(var1, var8, var6, this.wife_asm_fieldType, 0); } } else { var1.writeWithFieldName(var8, var6, this.wife_asm_fieldType, 0); } var22 = 44; } } } var22 = this.writeAfter(var1, var2, var22); if(var22 == 123) { var9.write(123); } var9.write(125); var1.setContext(var11); } } } else { super.write(var1, var2, var3, var4, var5); } } } } public void writeDirectNonContext(JSONSerializer var1, Object var2, Object var3, Type var4, int var5) throws IOException { if(var2 == null) { var1.writeNull(); } else { SerializeWriter var9 = var1.out; Person var10 = (Person)var2; if(var9.isEnabled(2097152)) { this.writeAsArrayNonContext(var1, var2, var3, var4, var5); } else { char var11 = 123; String var6 = "age"; Integer var12 = var10.getAge(); if(var12 == null) { if(var9.isEnabled(260)) { var9.write(var11); var9.writeFieldNameDirect(var6); var9.writeNull(0, 256); var11 = 44; } } else { var9.write(var11); var9.writeFieldNameDirect(var6); var1.writeWithFieldName(var12, var6, this.age_asm_fieldType, 0); var11 = 44; } var6 = "birthday"; Date var18 = var10.getBirthday(); if(var18 == null) { if(var9.isEnabled(964)) { 3ff0 var9.write(var11); var9.writeFieldNameDirect(var6); var9.writeNull(0, 0); var11 = 44; } } else { var9.write(var11); var9.writeFieldNameDirect(var6); var1.writeWithFieldName(var18, var6, this.birthday_asm_fieldType, 0); var11 = 44; } var6 = "gender"; Enum var13 = (Enum)var10.getGender(); if(var13 == null) { if(var9.isEnabled(964)) { var9.write(var11); var9.writeFieldNameDirect(var6); var9.writeNull(0, 0); var11 = 44; } } else { var9.writeFieldValueStringWithDoubleQuote(var11, var6, var13.name()); var11 = 44; } var6 = "id"; Long var19 = var10.getId(); if(var19 == null) { if(var9.isEnabled(260)) { var9.write(var11); var9.writeFieldNameDirect(var6); var9.writeNull(0, 256); var11 = 44; } } else { var9.write(var11); var9.writeFieldNameDirect(var6); var1.writeWithFieldName(var19, var6, this.id_asm_fieldType, 0); var11 = 44; } var6 = "name"; String var14 = var10.getName(); if(var14 == null) { if(var9.isEnabled(132)) { var9.write(var11); var9.writeFieldNameDirect(var6); var9.writeNull(0, 128); var11 = 44; } } else { var9.writeFieldValueStringWithDoubleQuoteCheck(var11, var6, var14); var11 = 44; } var6 = "wife"; Person var20 = var10.getWife(); if(var20 == null) { if(var9.isEnabled(964)) { var9.write(var11); var9.writeFieldNameDirect(var6); var9.writeNull(0, 0); var11 = 44; } } else { var9.write(var11); var9.writeFieldNameDirect(var6); if(var20.getClass() == Person.class) { if(this.wife_asm_ser_ == null) { this.wife_asm_ser_ = var1.getObjectWriter(Person.class); } ObjectSerializer var15 = this.wife_asm_ser_; if(var15 instanceof JavaBeanSerializer) { ((JavaBeanSerializer)var15).writeDirectNonContext(var1, var20, var6, this.wife_asm_fieldType, 0); } else { var15.write(var1, var20, var6, this.wife_asm_fieldType, 0); } } else { var1.writeWithFieldName(var20, var6, this.wife_asm_fieldType, 0); } var11 = 44; } if(var11 == 123) { var9.write(123); } var9.write(125); } } } public void writeUnsorted(JSONSerializer var1, Object var2, Object var3, Type var4, int var5) throws IOException { SerializeWriter var9 = var1.out; Person var10 = (Person)var2; if(!var9.isEnabled(8192) && !var9.isEnabled(134217728)) { if(!this.writeReference(var1, var2, var5)) { if(var9.isEnabled(2097152)) { this.writeAsArrayNormal(var1, var2, var3, var4, var5); } else { SerialContext var11 = var1.getContext(); var1.setContext(var11, var2, var3, 0); byte var10000; if(var1.isWriteClassName(var4, var2) && var4 != var2.getClass()) { var9.write(123); this.writeClassName(var1, (String)null, var2); var10000 = 44; } else { var10000 = 123; } char var12 = (char)var10000; char var22 = this.writeBefore(var1, var2, var12); boolean var13 = var9.isNotWriteDefaultValue(); var1.checkValue(this); boolean var15 = var1.hasNameFilters(this); String var6 = "name"; Object var8; if(this.applyName(var1, var2, var6) && this.applyLabel(var1, "")) { String var16 = var10.getName(); if(var13) { ; } if(this.apply(var1, var2, var6, var16)) { if(var15) { var6 = this.processKey(var1, var2, var6, var16); } var8 = this.processValue(var1, this.getBeanContext(4), var2, var6, var16); if(var16 != var8) { if(var8 == null) { if(var9.isEnabled(132)) { var9.write(var22); var9.writeFieldName(var6, false); var9.writeNull(0, 128); var22 = 44; } } else { var9.write(var22); var9.writeFieldName(var6, false); var1.writeWithFieldName(var8, var6, String.class, 0); var22 = 44; } } else if(var16 == null) { if(var9.isEnabled(132)) { var9.write(var22); var9.writeFieldName(var6, false); var9.writeNull(0, 128); var22 = 44; } } else { var9.writeFieldValue(var22, var6, var16); var22 = 44; } } } var6 = "id"; if(this.applyName(var1, var2, var6) && this.applyLabel(var1, "")) { Long var17 = var10.getId(); if(var13) { ; } if(this.apply(var1, var2, var6, var17)) { if(var15) { var6 = this.processKey(var1, var2, var6, var17); } var8 = this.processValue(var1, this.getBeanContext(3), var2, var6, var17); if(var17 != var8) { if(var8 == null) { if(var9.isEnabled(260)) { var9.write(var22); var9.writeFieldName(var6, false); var9.writeNull(0, 256); var22 = 44; } } else { var9.write(var22); var9.writeFieldName(var6, false); var1.writeWithFieldName(var8, var6, this.id_asm_fieldType, 0); var22 = 44; } } else if(var8 == null) { if(var9.isEnabled(260)) { var9.write(var22); var9.writeFieldName(var6, false); var9.writeNull(0, 256); var22 = 44; } } else { var9.write(var22); var9.writeFieldName(var6, false); var1.writeWithFieldName(var8, var6, this.id_asm_fieldType, 0); var22 = 44; } } } var6 = "age"; if(this.applyName(var1, var2, var6) && this.applyLabel(var1, "")) { Integer var23 = var10.getAge(); if(var13) { ; } if(this.apply(var1, var2, var6, var23)) { if(var15) { var6 = this.processKey(var1, var2, var6, var23); } var8 = this.processValue(var1, this.getBeanContext(0), var2, var6, var23); if(var23 != var8) { if(var8 == null) { if(var9.isEnabled(260)) { var9.write(var22); var9.writeFieldName(var6, false); var9.writeNull(0, 256); var22 = 44; } } else { var9.write(var22); var9.writeFieldName(var6, false); var1.writeWithFieldName(var8, var6, this.age_asm_fieldType, 0); var22 = 44; } } else if(var8 == null) { if(var9.isEnabled(260)) { var9.write(var22); var9.writeFieldName(var6, false); var9.writeNull(0, 256); var22 = 44; } } else { var9.write(var22); var9.writeFieldName(var6, false); var1.writeWithFieldName(var8, var6, this.age_asm_fieldType, 0); var22 = 44; } } } var6 = "wife"; if(this.applyName(var1, var2, var6) && this.applyLabel(var1, "")) { Person var24 = var10.getWife(); if(var13) { ; } if(this.apply(var1, var2, var6, var24)) { if(var15) { var6 = this.processKey(var1, var2, var6, var24); } var8 = this.processValue(var1, this.getBeanContext(5), var2, var6, var24); ObjectSerializer var18; if(var24 != var8) { if(var8 == null) { if(var9.isEnabled(964)) { var9.write(var22); var9.writeFieldName(var6, false); var9.writeNull(0, 0); var22 = 44; } } else { var9.write(var22); var9.writeFieldName(var6, false); if(var8.getClass() == Person.class) { if(this.wife_asm_ser_ == null) { this.wife_asm_ser_ = var1.getObjectWriter(Person.class); } var18 = this.wife_asm_ser_; if(var18 instanceof JavaBeanSerializer) { ((JavaBeanSerializer)var18).write(var1, var8, var6, this.wife_asm_fieldType, 0); } else { var18.write(var1, var8, var6, this.wife_asm_fieldType, 0); } } else { var1.writeWithFieldName(var8, var6, this.wife_asm_fieldType, 0); } var22 = 44; } } else if(var8 == null) { if(var9.isEnabled(964)) { var9.write(var22); var9.writeFieldName(var6, false); var9.writeNull(0, 0); var22 = 44; } } else { var9.write(var22); var9.writeFieldName(var6, false); if(var8.getClass() == Person.class) { if(this.wife_asm_ser_ == null) { this.wife_asm_ser_ = var1.getObjectWriter(Person.class); } var18 = this.wife_asm_ser_; if(var18 instanceof JavaBeanSerializer) { ((JavaBeanSerializer)var18).write(var1, var8, var6, this.wife_asm_fieldType, 0); } else { var18.write(var1, var8, var6, this.wife_asm_fieldType, 0); } } else { var1.writeWithFieldName(var8, var6, this.wife_asm_fieldType, 0); } var22 = 44; } } } var6 = "gender"; if(this.applyName(var1, var2, var6) && this.applyLabel(var1, "")) { Enum var19 = (Enum)var10.getGender(); if(var13) { ; } if(this.apply(var1, var2, var6, var19)) { if(var15) { var6 = this.processKey(var1, var2, var6, var19); } var8 = this.processValue(var1, this.getBeanContext(2), var2, var6, var19); if(var19 != var8) { if(var8 == null) { if(var9.isEnabled(964)) { var9.write(var22); var9.writeFieldName(var6, false); var9.writeNull(0, 0); var22 = 44; } } else { var9.write(var22); var9.writeFieldName(var6, false); var1.writeWithFieldName(var8, var6, this.gender_asm_fieldType, 0); 3ff0 var22 = 44; } } else if(var19 == null) { if(var9.isEnabled(964)) { var9.write(var22); var9.writeFieldName(var6, false); var9.writeNull(0, 0); var22 = 44; } } else { var9.write(var22); var9.writeFieldName(var6, false); var1.writeWithFieldName(var19, var6, Gender.class, 0); var22 = 44; } } } var6 = "birthday"; if(this.applyName(var1, var2, var6) && this.applyLabel(var1, "")) { Date var25 = var10.getBirthday(); if(var13) { ; } if(this.apply(var1, var2, var6, var25)) { if(var15) { var6 = this.processKey(var1, var2, var6, var25); } var8 = this.processValue(var1, this.getBeanContext(1), var2, var6, var25); if(var25 != var8) { if(var8 == null) { if(var9.isEnabled(964)) { var9.write(var22); var9.writeFieldName(var6, false); var9.writeNull(0, 0); var22 = 44; } } else { var9.write(var22); var9.writeFieldName(var6, false); var1.writeWithFieldName(var8, var6, this.birthday_asm_fieldType, 0); var22 = 44; } } else if(var8 == null) { if(var9.isEnabled(964)) { var9.write(var22); var9.writeFieldName(var6, false); var9.writeNull(0, 0); var22 = 44; } } else { var9.write(var22); var9.writeFieldName(var6, false); var1.writeWithFieldName(var8, var6, this.birthday_asm_fieldType, 0); var22 = 44; } } } var22 = this.writeAfter(var1, var2, var22); if(var22 == 123) { var9.write(123); } var9.write(125); var1.setContext(var11); } } } else { super.write(var1, var2, var3, var4, var5); } } public void writeAsArray(JSONSerializer var1, Object var2, Object var3, Type var4, int var5) throws IOException { SerializeWriter var9 = var1.out; Person var10 = (Person)var2; var9.write(91); String var6 = "age"; Integer var11; ObjectSerializer var12; if((var11 = var10.getAge()) == null) { var9.writeNull(); } else if(var11.getClass() == Integer.class) { if(this.age_asm_ser_ == null) { this.age_asm_ser_ = var1.getObjectWriter(Integer.class); } var12 = this.age_asm_ser_; if(var12 instanceof JavaBeanSerializer) { ((JavaBeanSerializer)var12).writeAsArrayNonContext(var1, var11, var6, Integer.class, 0); } else { var12.write(var1, var11, var6, Integer.class, 0); } } else { var1.writeWithFieldName(var11, var6, this.age_asm_fieldType, 0); } var9.write(44); var6 = "birthday"; Date var13; if((var13 = var10.getBirthday()) == null) { var9.writeNull(); } else if(var13.getClass() == Date.class) { if(this.birthday_asm_ser_ == null) { this.birthday_asm_ser_ = var1.getObjectWriter(Date.class); } var12 = this.birthday_asm_ser_; if(var12 instanceof JavaBeanSerializer) { ((JavaBeanSerializer)var12).writeAsArrayNonContext(var1, var13, var6, Date.class, 0); } else { var12.write(var1, var13, var6, Date.class, 0); } } else { var1.writeWithFieldName(var13, var6, this.birthday_asm_fieldType, 0); } var9.write(44); var6 = "gender"; var9.writeEnum(var10.getGender()); var9.write(44); var6 = "id"; Long var14; if((var14 = var10.getId()) == null) { var9.writeNull(); } else if(var14.getClass() == Long.class) { if(this.id_asm_ser_ == null) { this.id_asm_ser_ = var1.getObjectWriter(Long.class); } var12 = this.id_asm_ser_; if(var12 instanceof JavaBeanSerializer) { ((JavaBeanSerializer)var12).writeAsArrayNonContext(var1, var14, var6, Long.class, 0); } else { var12.write(var1, var14, var6, Long.class, 0); } } else { var1.writeWithFieldName(var14, var6, this.id_asm_fieldType, 0); } var9.write(44); var6 = "name"; var9.writeString(var10.getName(), ','); var6 = "wife"; Person var15; if((var15 = var10.getWife()) == null) { var9.writeNull(); } else if(var15.getClass() == Person.class) { if(this.wife_asm_ser_ == null) { this.wife_asm_ser_ = var1.getObjectWriter(Person.class); } var12 = this.wife_asm_ser_; if(var12 instanceof JavaBeanSerializer) { ((JavaBeanSerializer)var12).writeAsArrayNonContext(var1, var15, var6, Person.class, 0); } else { var12.write(var1, var15, var6, Person.class, 0); } } else { var1.writeWithFieldName(var15, var6, this.wife_asm_fieldType, 0); } var9.write(93); } public void writeAsArrayNormal(JSONSerializer var1, Object var2, Object var3, Type var4, int var5) throws IOException { SerializeWriter var9 = var1.out; Person var10 = (Person)var2; var9.write(91); String var6 = "age"; Integer var11; ObjectSerializer var12; if((var11 = var10.getAge()) == null) { var9.writeNull(); } else if(var11.getClass() == Integer.class) { if(this.age_asm_ser_ == null) { this.age_asm_ser_ = var1.getObjectWriter(Integer.class); } var12 = this.age_asm_ser_; var12.write(var1, var11, var6, Integer.class, 0); } else { var1.writeWithFieldName(var11, var6, this.age_asm_fieldType, 0); } var9.write(44); var6 = "birthday"; Date var13; if((var13 = var10.getBirthday()) == null) { var9.writeNull(); } else if(var13.getClass() == Date.class) { if(this.birthday_asm_ser_ == null) { this.birthday_asm_ser_ = var1.getObjectWriter(Date.class); } var12 = this.birthday_asm_ser_; var12.write(var1, var13, var6, Date.class, 0); } else { var1.writeWithFieldName(var13, var6, this.birthday_asm_fieldType, 0); } var9.write(44); var6 = "gender"; var9.writeEnum(var10.getGender()); var9.write(44); var6 = "id"; Long var14; if((var14 = var10.getId()) == null) { var9.writeNull(); } else if(var14.getClass() == Long.class) { if(this.id_asm_ser_ == null) { this.id_asm_ser_ = var1.getObjectWriter(Long.class); } var12 = this.id_asm_ser_; var12.write(var1, var14, var6, Long.class, 0); } else { var1.writeWithFieldName(var14, var6, this.id_asm_fieldType, 0); } var9.write(44); var6 = "name"; var9.writeString(var10.getName(), ','); var6 = "wife"; Person var15; if((var15 = var10.getWife()) == null) { var9.writeNull(); } else if(var15.getClass() == Person.class) { if(this.wife_asm_ser_ == null) { this.wife_asm_ser_ = var1.getObjectWriter(Person.class); } var12 = this.wife_asm_ser_; var12.write(var1, var15, var6, Person.class, 0); } else { var1.writeWithFieldName(var15, var6, this.wife_asm_fieldType, 0); } var9.write(93); } public void writeAsArrayNonContext(JSONSerializer var1, Object var2, Object var3, Type var4, int var5) throws IOException { SerializeWriter var9 = var1.out; Person var10 = (Person)var2; var9.write(91); String var6 = "age"; Integer var11; ObjectSerializer var12; if((var11 = var10.getAge()) == null) { var9.writeNull(); } else if(var11.getClass() == Integer.class) { if(this.age_asm_ser_ == null) { this.age_asm_ser_ = var1.getObjectWriter(Integer.class); } var12 = this.age_asm_ser_; if(var12 instanceof JavaBeanSerializer) { ((JavaBeanSerializer)var12).writeAsArrayNonContext(var1, var11, var6, Integer.class, 0); } else { var12.write(var1, var11, var6, Integer.class, 0); } } else { var1.writeWithFieldName(var11, var6, this.age_asm_fieldType, 0); } var9.write(44); var6 = "birthday"; Date var13; if((var13 = var10.getBirthday()) == null) { var9.writeNull(); } else if(var13.getClass() == Date.class) { if(this.birthday_asm_ser_ == null) { this.birthday_asm_ser_ = var1.getObjectWriter(Date.class); } var12 = this.birthday_asm_ser_; if(var12 instanceof JavaBeanSerializer) { ((JavaBeanSerializer)var12).writeAsArrayNonContext(var1, var13, var6, Date.class, 0); } else { var12.write(var1, var13, var6, Date.class, 0); } } else { var1.writeWithFieldName(var13, var6, this.birthday_asm_fieldType, 0); } var9.write(44); var6 = "gender"; var9.writeEnum(var10.getGender()); var9.write(44); var6 = "id"; Long var14; if((var14 = var10.getId()) == null) { var9.writeNull(); } else if(var14.getClass() == Long.class) { if(this.id_asm_ser_ == null) { this.id_asm_ser_ = var1.getObjectWriter(Long.class); } var12 = this.id_asm_ser_; if(var12 instanceof JavaBeanSerializer) { ((JavaBeanSerializer)var12).writeAsArrayNonContext(var1, var14, var6, Long.class, 0); } else { var12.write(var1, var14, var6, Long.class, 0); } } else { var1.writeWithFieldName(var14, var6, this.id_asm_fieldType, 0); } var9.write(44); var6 = "name"; var9.writeString(var10.getName(), ','); var6 = "wife"; Person var15; if((var15 = var10.getWife()) == null) { var9.writeNull(); } else if(var15.getClass() == Person.class) { if(this.wife_asm_ser_ == null) { this.wife_asm_ser_ = var1.getObjectWriter(Person.class); } var12 = this.wife_asm_ser_; if(var12 instanceof JavaBeanSerializer) { ((JavaBeanSerializer)var12).writeAsArrayNonContext(var1, var15, var6, Person.class, 0); } else { var12.write(var1, var15, var6, Person.class, 0); } } else { var1.writeWithFieldName(var15, var6, this.wife_asm_fieldType, 0); } var9.write(93); } }
相关文章推荐
- Android学习之JSON数据解析
- Android学习--封装成json数据和解析json数据
- Android json解析有关内容学习笔记
- iOS学习——JSON数据解析(十一)
- Json解析工具 @JsonIgnore 注解的使用
- FastJson解析工具解析Json
- Json学习--简单解析
- mac工具-解析json
- 5分钟让你学会用最高效的工具解析所有Json
- SpringMVC学习笔记------------ajax传递并解析Json
- 程序开发基础学习五(json配置、解析文件,c++篇)
- JSON工具学习记录--FastJSON循环引用问题
- IOS学习 Json解析时,方便的小技巧
- 【JavaEE学习笔记】JSON解析_原生JSON,GSON,FastJSON
- 菜鸟学习Spring——SpringMVC注解版解析不同格式的JSON串
- 推荐一款cpp解析json工具--rapidjson
- json和bean的转换工具Jackson ObjectMapper类使用解析
- IOS学习笔记,网络请求,json解析
- 编写自己的json解析工具二
- Json解析工具Jackson(使用注解)