Avro generated code, string is charsequence, cannot be deserialized by Gson, so with the following code, Parsearray is not perfect:
1 Static<T> list<t> Parsearray (Jsonarray arrary,class<?> CLS)throwsillegalaccessexception, InvocationTargetException, Nosuchmethodexception, Instantiationexception, classnotfoundexception{2list<t> result =NewArraylist<t>();3String ClassName =cls.getname ();4 for(intI=0;i<arrary.length (); i++){ 5 if(Classname.contains ("Java.lang")){ 6 if(Classname.equals ("Java.lang.CharSequence") | |7Classname.equals ("Java.lang.String")) {8 Result.add ((T) arrary.getstring (i));9}Else if(Classname.equals ("Java.lang.Double")) {Ten Result.add ((T) ((Double) arrary.getdouble (i))); One}Else if(Classname.equals ("Java.lang.Integer")) { A Result.add ((T) ((Integer) arrary.getint (i))); -}Else if(Classname.equals ("Java.lang.Boolean")) { - Result.add ((T) ((Boolean) Arrary.getboolean (i))); the } -}Else{ - //Parsing Objects - Result.add ((T) Json2bean (Arrary.getjsonobject (i), CLS)); + } - } + returnresult; A } at - Public Static<T> T Json2bean (jsonobject jsonobject, class<?> CLS)throwsIllegalaccessexception, - invocationtargetexception, Nosuchmethodexception, Instantiationexception, classnotfoundexception { - //if (item = = NULL) { - //return null; - // } inT item =(T) cls.newinstance (); -field[] Fields =Cls.getdeclaredfields (); to for(Field field:fields) { +String VarName =Field.getname (); - if(Jsonobject.has (varName)) { theObject value =Jsonobject.get (varName); * $Class<?> Currentclass =Field.gettype ();Panax Notoginseng if(Currentclass.equals (List.class)){ -Jsonarray array =(Jsonarray) value; theString subclassname = Field.getgenerictype (). toString (). Replace ("java.util.list<", "" "); +Subclassname = subclassname.substring (0,subclassname.length ()-1); A //System.out.println (subclassname); theClass<?> Clasz =Class.forName (subclassname); + //System.out.println (Z.getclass ()); - beanutils.setproperty (item, VarName, Parsearray (array, Clasz)); $ $}Else{ - if(Valueinstanceofjsonobject) { - beanutils.setproperty (item, VarName, Json2bean ((jsonobject) value,currentclass)); the}Else{ - if(Valueinstanceofjsonnull) {WuyiValue =NULL; the } - beanutils.setproperty (item, varName, value); Wu } - } About}Else{ $ //Set Default values - //beanutils.setproperty (item, varName, NULL); - } - } A returnitem; +}
JSON into Java objects