Object轉(zhuǎn)json字符串,Object轉(zhuǎn)Map,Map轉(zhuǎn)Object簡單源碼_第1頁
Object轉(zhuǎn)json字符串,Object轉(zhuǎn)Map,Map轉(zhuǎn)Object簡單源碼_第2頁
Object轉(zhuǎn)json字符串,Object轉(zhuǎn)Map,Map轉(zhuǎn)Object簡單源碼_第3頁
Object轉(zhuǎn)json字符串,Object轉(zhuǎn)Map,Map轉(zhuǎn)Object簡單源碼_第4頁
Object轉(zhuǎn)json字符串,Object轉(zhuǎn)Map,Map轉(zhuǎn)Object簡單源碼_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領

文檔簡介

。切ect轉(zhuǎn)json字符串,0切ect轉(zhuǎn)Map,Map轉(zhuǎn)Object

簡單源碼publicclassAppObjectUtil{privatestaticfinalLoggerloggerLoggerFactory.getLogger(AppObjectUtil.class);privatestaticfinalStringCLASSNAME=AppObjectUtil.class.getName();privatestaticfinalStringJSONPROPERTY_FILE=CLASSNAME;privatestaticfinalStringESCAPE_JSON_RESPONSE"escapeJSONResponse";privatestaticBooleaniCrossSiteScriptingEnabled=null;privatestaticBooleanisEscapeNull=false;privatestaticfinalStringlineSeparatorSystem.getProperty("line,separator");;privatefinalstaticString[][]ESCAPE-CHARACTERS={{"\\<\\\\\{W},"\\n"h{"\r\"\\r'),{"\t","Wt"),throwe;}catch(IntrospectionExceptione){logger.error('IntrospectionExceptionerror",e);throwe;))}privatestaticvoidoutputAsJson(StringBuildersb,Stringindent,Objectobject)throwsException{if(object==null){if(getIsEscapeNull()){return;)sb.叩pend("nul「);}elseif(iProcessedObjects.contains(object)11objectinstanceofString11objectinstanceofDate11objectinstanceofCharacter||objectinstanceofClass||objectinstanceofThrowable){sb.append(quote(object));}elseif(objectinstanceofBoolean11objectinstanceofNumber){sb.append(object.toStringO);}elseif(objectinstanceofMap){iProcessedObjects.add(object);M叩<?,?>m叩=(M叩<?,?>)object;if(map.sizeO==0){sb.叩pend("{}");}else{sb.append("{");Iterator<?>keys=map.keySet().iterator();inti=0;while(keys.hasNext()){Objectkey=keys.next();if(getIsEscapeNull()&&map.get(key)==null){continue;)if(i>0){sb.叩pend("J);)i++;sb.append(lineSeparator);sb.append(indent);sb.叩pend("\f);sb.append(quote(key.toStringO));sb.叩pend(":");outputAsJson(sb,indent+"\t"fmap.get(key));)sb.append(lineSeparator);sb.append(indent);sb.append("}');)iProcessedObjects.remove(object);}elseif(object.getClass().isArray()){iProcessedObjects.add(object);intlength=Array.getLength(object);if(length==0){sb.append("[]");}elseif(length==1){sb.append("f);if(getIsEscapeNull()&&Array.get(object,0)==null){}else(outputAsJson(sb,indent,Array.get(object,0));)sb.叩pend(丁);}else(sb.append("[');intk=0;for(inti=0;i<length;i++){if(getIsEscapeNull()&&Array.get(object,i)==null){continue;)if(k>0){sb.叩pend("J);)k++;sb.append(lineSeparator);sb.append(indent);sb.append('\f);outputAsJson(sb,indent+"\t",Array.get(object,i));)sb.append(lineSeparator);sb.append(indent);sb.append('\t");sb.叩pend("「);)iProcessedObjects.remove(object);}elseif(objectinstanceofCollection){iProcessedObjects.add(object);outputAsJson(sb,indent,((Collection<?>)object).toArrayO);iProcessedObjects.remove(object);}else{iProcessedObjects.add(object);try(PropertyDescriptor properties1]=Introspector.getBeanInfo(object.getClass()).getPropertyDescriptors();Map<Object,Object>map-newHashMap<Object,Object>(properties,length);for(inti=0;i<properties.length;i++){MethodreadMethod=properties!i].getReadMethod();if(readMethod!=null){booleanisContinue=false;for(Fieldfield:object.getClass().getDeclaredFields()){if((field.getName().substring(0,1).toLowerCase()+field,getName().substring(1)).equals(properties[i].getName())){map.put(field.getName(),readMethod.invoke(object,(Object[])null));isContinue=true;break;)if(!isContinue){map.put(properties[i].getName(),readMethod.invoke(object,(Object[])null));)))outputAsJson(sb,indent,map);iProcessedObjects.remove(object);}catch(InvocationTargetExceptione){logger.error("InvocationTargetExceptionerror"ze);throwe;}catch(IllegalAccessExceptione){logger.error('IllegalAccessExceptionerror",e);throwe;}catch(IntrospectionExceptione){logger.error(*IntrospectionExceptionerror",e);throwe;)@Title:quote@Description:替換掉特殊字符為html識別的字符@paramobject@return*/privatestaticStringquote(Objectobject){Stringstr=object.toStringO;for(inti=0;i<ESCAPE.CHARACTERS.length;i++){str=str.replaceAII(ESCAPE_CHARACTERS[i][O],ESCAPE.CHARACTERS[i][1]);)if(AppObjectUtil.isCrossSiteScriptingEnabled()){for(inti=0;i<CROSS_SnE_SCRIPTING_CHARACTERS.length;i++){str=str.replaceAIKCROSS-SITE-SCRIPTING.CHARACTERStniO],CROSS.SITE.SCRIPTING_CHARACTERS[i][1]);))StringBuffersb=newStringBuffer(str.length()+2);sb.append("\"");sb.append(str);sb.append("\"");Stringresult=sb.toStringO;returnresult;)/這個方法是檢查是否支持json對于script的站點跨域問題@returntrue如果支持json對于script的跨域.*/privatestaticbooleanisCrossSiteScriptingEnabled(){if(iCrossSiteScriptingEnabled==null){iCrossSiteScriptingEnabled=newBoolean(true);try(ResourceBundlebundle=ResourceBundle.getBundle(JSONPROPERTY_FILE);StringescapeJSONResponse=(String)bundle.getObject(ESCAPE_JSON_RESPONSE);iCrossSiteScriptingEnabled=newBoolean(escapeJSONResponse);}catch(MissingResourceExceptione){logger.error("MissingResourceExceptionerror",e);))returniCrossSiteScriptingEnabled.booleanValue();@Title:sqlStrToSqlQueryString@Description:把sql字符串按行解析并生成合法SQL語句@paramsqIStr@return@throwslOException/publicstaticStringsqlStrToSqlQueryString(StringsqIStr)throwslOException{if(sqlStr==null){returnnull;}BufferedReaderreader=newBufferedReader(newStringReader(sqIStr));Stringline=null;StringBufferqueryBuffer=null;while((line=reader.readLine())!=null){if(queryBuffer==null){queryBuffer=newStringBuffer();if(line.length()>0&&!line.startsWith("--')){queryBuffer.append(line).append("");if(line.lastIndexOf(";")!=line.length(}-l){continue;}else(returnqueryBuffer.substring(0,queryBuffer.Iength()-2);})}if(queryBuffer==null){returnsqIStr;)returnqueryBuffer.substringCO,queryBuffer.Iength()-1);)/@returntheisEscapeNull/publicstaticBooleangetlsEscapeNullQ{returnisEscapeNull;〃根據(jù)http:〃上說明不必過濾一下字符//{'\'\"\\\"L);privatefinalstaticString[][]CROSS.SHE.SCRIPTING.CHARACTERS={"&"L{">\">"L);privatestaticSet<Object>iProcessedObjects;/<p>Title:</p><p>Description:構(gòu)造器</p>*/publicAppObjectUtil(){super();)@Title:objectToJson@paramisEscapeNulltheisEscapeNulltosetpublicstaticvoidsetIsEscapeNull(BooleanisEscapeNull){AppObjectUtil.isEscapeNull=isEscapeNull;)/@Title:generateFieldMapFromObject@paramtargetclass?return@throwsException/publicstaticMap<String,Object>generateFieldMapFromObject(ObjecttargetClass)throwsException{if(targetclass==null){returnnull;)M叩〈String,Object>fieldMap=null;PropertyDescriptor properties[] =Introspector.getBeanInfo(targetClass.getClass()).getPropertyDescriptors();for(inti=0;i<properties.length;i++){MethodreadMethod=properties[i].getReadMethod();if(readMethod!=null){if(fieldMap==null){fieldMap=newHashMap<String,Object>();)booleanisContinue=false;for(Fieldfield:targetClass.getClass().getDeclaredFields()){if((field.getName().substring(0,l).toLowerCase()+field.getName().substring(l)).equals(properties[i].getName())){fieldMap.putCfield.getNameO/eadMethod.invokeftargetClass,(Object[])null));isContinue=true;break;))if(!isContinue){try(fieldMap.put(properties[i].getName(),readMethod.invoke(targetClass.getClass(),(Object[])null));}catch(Exceptione){)}returnfieldMap;)/**@paramtargetclass@paramfieldMap@return@throwsException/targetclass,publicstaticObjectgenerateObjectFromFieldMap(Objecttargetclass,Map<String,Object>fieldMap)throwsException{if(targetclass==null){returnnull;)Class<?>objectclass=null;if(targetclassinstanceofClass){objectclass=(Class<?>)targetclass;targetclass=objectClass.newInstance();}else{objectclass=targetClass.getClass();PropertyDescriptorproperties1]PropertyDescriptorproperties1]Introspector.getBeanInfo(objectClass).getPropertyDescriptors();for(inti=0;i<properties.length;i++){MethodwriteMethod=properties[i].getWriteMethod();if(writeMethod!=null){Objectvalue=null;for(Fieldfield:objectClass.getDeclaredFields()){if((field.getName().substrings,l).toLowerCase()+field.getName().substring(l)).equals(properties[i].getName())){value=fieldMap.get(field.getName());break;))if(value==null){value=fieldMap.get(properties[i].getName());)if(value==null){for(Map.Entry<String,Object>entry:fieldMap.entrySetO){if(entry.getValueO!=null){StringsetMethodName="set"+entry.getKey().substring(O,l).toUpperCase()+entry.getKey().substring(l);if(writeMethod.getName().equals(setMethodName)){value=entry.getValue();})))if(value!=null&&(!nn.equals(value.toString().tnm(}))){for(Class<?>c:writeMethod.getParameterTypes()){if("java.lang.Integer".equals(c.getName())||"int".equals(c.getName())){writeMethod.invoke(targetClass,Integer.valueOf(value.toStringO));break;)n.equals(c.getName())||"long".equals(c.getName())){writeMethod.invoke(targetClass,Long.valueOf(value.toStringO));break;)if("java.lang.Double".equals(c.getName())||"double".equals(c.getNwriteMethod.invoke(targetClass,Double.valueOf(value.toStringO));break;)if("java.lang.Float".equals(c.getName())||"float".equals(c.getName())){writeMethod.invoke(targetClass,Float.valueOf(value.toStringO));break;}if("java.lang.String".equals(c.getName())){writeMethod.invoke(targetClass,value.toStringO);break;)if("java.math.BigDecimal".equals(c.getName())){writeMethod.invoke(targetClass,newBigDecimal(value.toString().replaceAII(",","")));break;)ifCjava.util.Date".equals(c.getName())&&"java.lang.String".equals(value.getClass().getName())){Stringdf="yyyy-MM-dd";if(value.toString().length()>10){df="yyyy-MM-ddHH:mm:ss";)writeMethod.invoke(targetClass,AppDateAndStringUtil.parse(value.toString(),df));break;)try(writeMethod.invokeftargetClass,value);}catch(Exceptione){logger.error("generateObjectFromFieldMaperror",e);)break;))))returntargetclass;@Description:把對象轉(zhuǎn)換成json格式的數(shù)據(jù)@paramobject@return/publicstaticStringtoJson(Objectobject,StringdateFormat){StringBuildersb=newStringBuilder();try(iProcessedObjects=newHashSet<Object>();outputAsJson(sb,"object,dateFormat);}catch(Exceptione){logger.error("toJsonerror*,e);}returnsb.toStringO;)publicstaticStringtoJson(Objectobject){StringBuildersb=newStringBuilder();try(iProcessedObjects=newHashSet<Object>();outputAsJson(sbzobject);}catch(Exceptione){logger.error("toJsonerror"ze);returnsb.toStringO;@Title:outputAsJson@Description:返回json格式的數(shù)據(jù)@paramsb返回json數(shù)據(jù)到StringBuilder對象中@paramindent當前indent@paramobject需要轉(zhuǎn)換成json格式的對象@throwsException/ObjectprivatestaticvoidoutputAsJson(StringBuildersb,Stringindent,object,StringdateFormat)throwsException{Objectif(object==null){if(getlsEscapeNull()){return;)sb.叩pend("nul「);}elseif(objectinstanceofDate){Datedate=(Date)object;sb.append(quote(AppDateAndStringUtil.format(date,dateFormat)));)elseif(iProcessedObjects.contains(object)11objectinstanceofStringobjectinstanceofCharacter||objectinstanceofClass||objectinstanceofThrowable){sb.append(quote(object));}elseif(objectinstanceofBoolean||objectinstanceofNumber){sb.append(object.toStringO);}elseif(objectinstanceofMap){iProcessedObjects.add(object);M叩<?,?>map=(Map<?,?>)object;if(map.size()==0){sb.append("{}");}else{sb.append("(");Iterator<?>keys=map.keySet().iterator();inti=0;while(keys,hasNext()){Objectkey=keys.next();if(getIsEscapeNull()&&map.get(key)==null){continue;)sb.叩pend(T);i++;sb.append(lineSeparator);sb.append(indent);sb.append("\f);sb.append(quote(key.toStringO));sb.叩pend(':");outputAsJson(sb,indent+"\t\map.get(key),dateFormat);)sb.append(lineSeparator);sb.append(indent);sb.叩pend("}))iProcessedObjects.remove(object);}elseif(object.getClass().isArray()){iProcessedObjects.add(object);intlength=Array.getLength(object);if(length==0){sb.叩pend("[「);}elseif(length==1){sb.append("f);if(getIsEscapeNull()&&Array.get(object,0)==null){}else{outputAsJson(sb,indent,Array.get(object,0),dateFormat);)sb.append(丁);}else{sb.appended);intk=0;for(inti=0;i<length;i++){if(getIsEscapeNull()&&Array.get(object,i)==null){continue;)if(k>0){sb.叩pend("J);)k++;sb.append(lineSeparator);sb.append(indent);sb.叩pend("\t)o

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論