您的位置:首页 > Web前端 > JavaScript

JSON解析工具学习

2017-11-25 00:00 246 查看
各个JSON技术的简介和优劣

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);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: