Reka bentuk Android Fastjson


Fastjson Android direka dengan ASMDeserializerFactory

ASMDeserializerFactory ialah Deserializer yang digunakan untuk menggunakan ASM secara dinamik untuk menjana JavaBeans Ia dioptimumkan khas untuk ciri setiap kelas untuk memperoleh prestasi terpantas.

1. Had

1.1 Keserasian mesin maya

Pada masa ini ASMDeserializerFactory tidak boleh berjalan pada mesin maya dalvik OS dari android dan mesin maya Cloud Cloud.

Tidak disokong1.2 kelas super Multi-field Pada masa ini ASMDeserializerFactory tidak menyokong JavaBeans dengan lebih daripada 200 medan. Apabila melakukan penyahserikatan, anda perlu menentukan pembolehubah tempatan untuk menyimpan hasil penghuraian Rangka kerja asm semasa tidak boleh mentakrifkan lebih daripada 256 pembolehubah Pendekatan konservatif semasa ialah jika bilangan medan melebihi 200, ASMDeserializerFactory tidak digunakan.
DeserializeBeanInfo beanInfo = DeserializeBeanInfo.computeSetters(clazz, type);
if (beanInfo.getFieldList().size() > 200) {
    asmEnable = false;
}
2 Perlaksanaan
Mesin mayaAdakah ia disokong
public class ASMUtils {
     public static boolean isAndroid(String vmName) {
        String lowerVMName = vmName.toLowerCase();
        return lowerVMName.contains("dalvik") 
                 || lowerVMName.contains("lemur") // aliyun-vm name
                 ;
     }
}

Jika kelas mempunyai pembina awam lalai, gunakan terus baharu untuk mencipta instance, jika tidak, gunakan JavaserBenarDesign; contoh itu.

Bendera setiap 32 pembolehubah disimpan dalam pembolehubah jenis int dan _isFlag digunakan untuk menetapkan dan membaca sama ada ia telah dihuraikan masing-masing.