总结的一些json格式和对象/String/Map/List等的互转工具类,有需要的可以看看,需要引入jackson-core-asl-1.7.1.jar、jackson-jaxrs-1.7.1.jar、jackson-mapper-asl-1.7.1.jar这三个jar包
- packagecom.zuidaima.util.json;
- importjava.io.InputStream;
- importjava.io.OutputStream;
- importjava.io.Reader;
- importjava.io.Writer;
- importjava.net.URL;
- importjava.util.ArrayList;
- importjava.util.Date;
- importjava.util.HashMap;
- importjava.util.List;
- importjava.util.Map;
- importorg.codehaus.jackson.JsonNode;
- importorg.codehaus.jackson.map.DeserializationConfig;
- importorg.codehaus.jackson.map.ObjectMapper;
- importorg.codehaus.jackson.map.annotate.JsonSerialize;
- importorg.codehaus.jackson.map.type.TypeFactory;
- publicclassJsonUtil{
- privatestaticObjectMappermapper=newObjectMapper();
- static{
- /**
- *反序列化时忽略多余的属性
- */
- mapper.getDeserializationConfig().set(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES,false);
- /**
- *忽略Null的值,节省空间.
- */
- mapper.getSerializationConfig().setSerializationInclusion(JsonSerialize.Inclusion.NON_NULL);
- /**
- *忽略Default值木有变化的属性,更节省空间,用于接收方有相同的Class
- *如int属性初始值为0,那么这个属性将不会被序列化
- */
- mapper.getSerializationConfig().setSerializationInclusion(JsonSerialize.Inclusion.NON_DEFAULT);
- }
- /**
- *
- *@Title:isJSON
- *@authorkaka
- *@Description:判断jsonString是否可以转换成json格式
- *@param@paramjsonString
- *@param@return
- *@returnboolean
- *@throws
- */
- publicstaticbooleanisJSON(StringjsonString){
- returnmapper.canSerialize(HashMap.class);
- }
- publicstatic<V>Map<String,V>toMap(Stringcontent,Class<?extendsV>clazz)throwsException{
- returnmapper.readValue(content,TypeFactory.mapType(HashMap.class,String.class,clazz));
- }
- publicstatic<V>Map<String,V>toMap(InputStreamis,Class<?extendsV>clazz)throwsException{
- returnmapper.readValue(is,TypeFactory.mapType(HashMap.class,String.class,clazz));
- }
- publicstatic<V>Map<String,V>toMap(Readeris,Class<?extendsV>clazz)throwsException{
- returnmapper.readValue(is,TypeFactory.mapType(HashMap.class,String.class,clazz));
- }
- publicstatic<V>Map<String,V>toMap(URLis,Class<?extendsV>clazz)throwsException{
- returnmapper.readValue(is,TypeFactory.mapType(HashMap.class,String.class,clazz));
- }
- publicstatic<E>List<E>toList(Stringcontent,Class<?extendsE>clazz)throwsException{
- returnjsonToList(content,clazz);
- }
- /**
- *
- *@Title:jsonToList
- *@authorkaka
- *@Description:json转list,List的元素类型,会一并转换完成如List<User>
- *@param@param<E>
- *@param@paramcontent
- *@param@paramclazz
- *@param@return元素类型为E的List
- *@param@throwsException
- *@returnList<E>
- *@throws
- */
- publicstatic<E>List<E>jsonToList(Stringcontent,Class<?extendsE>clazz)throwsException{
- returnmapper.readValue(content,TypeFactory.collectionType(ArrayList.class,clazz));
- }
- /**
- *
- *@Title:jsonToIntArray
- *@authorkaka
- *@Description:json转整形数组
- *@param@paramcontent
- *@param@return
- *@param@throwsException
- *@returnInteger[]
- *@throws
- */
- publicstaticInteger[]jsonToIntArray(Stringcontent)throwsException{
- returnjsonToArray(content,Integer.class);
- }
- publicstaticInteger[]jsonToIntArray(Stringcontent,Stringkey)throwsException{
- returnjsonToArray(content,key,Integer.class);
- }
- /**
- *
- *@Title:jsonToArray
- *@authorkaka
- *@Description:json转对象数组
- *@param@param<E>
- *@param@paramcontent
- *@param@paramclazz数组中的对象类型
- *@param@returnE类型的数组,如User[]
- *@param@throwsException
- *@returnE[]
- *@throws
- */
- publicstatic<E>E[]jsonToArray(Stringcontent,Class<?extendsE>clazz)throwsException{
- if(content!=null){
- returnmapper.readValue(content,TypeFactory.arrayType(clazz));
- }else{
- returnnull;
- }
- }
- /**
- *
- *@Title:fromJsonToObject
- *@authorkaka
- *@Description:json转java对象,为兼容原util类
- *@param@param<T>
- *@param@paramcontent
- *@param@paramclazz目标类型
- *@param@return
- *@param@throwsException
- *@returnT返回类型为T的对象
- *@throws
- */
- publicstatic<T>TfromJsonToObject(Stringcontent,Class<?extendsT>clazz)throwsException{
- returnjsonToObject(content,clazz);
- }
- publicstatic<T>TjsonToObject(Stringcontent,Class<?extendsT>clazz)throwsException{
- returnmapper.readValue(content,clazz);
- }
- /**
- *
- *@Title:jsonToObject
- *@authorkaka
- *@Description:一个jsonStr包含多个java对象,取其中一个转化为java对象的方法
- *@param@param<T>
- *@param@paramcontentjson格式的字符串
- *@param@paramkey要转换的子json串的key
- *@param@paramclazz目标类型
- *@param@return返回类型为T的对象
- *@param@throwsException
- *@returnT
- *@throws
- */
- publicstatic<T>TjsonToObject(Stringcontent,Stringkey,Class<?extendsT>clazz)throwsException{
- JsonNoderootNode=mapper.readValue(content,JsonNode.class);
- JsonNodepath=rootNode.path(key);
- if(!path.isMissingNode()){
- returnjsonToObject(path.toString(),clazz);
- }else{
- returnnull;
- }
- }
- publicstaticIntegergetInt(Stringcontent,Stringkey)throwsException{
- JsonNoderootNode=mapper.readValue(content,JsonNode.class);
- JsonNodepath=rootNode.path(key);
- if(!path.isMissingNode()){
- returnjsonToObject(path.toString(),Integer.class);
- }else{
- returnnull;
- }
- }
- publicstaticStringgetString(Stringcontent,Stringkey)throwsException{
- JsonNoderootNode=mapper.readValue(content,JsonNode.class);
- JsonNodepath=rootNode.path(key);
- if(!path.isMissingNode()){
- returnjsonToObject(rootNode.path(key).toString(),String.class);
- }else{
- returnnull;
- }
- }
- publicstaticDategetDate(Stringcontent,Stringkey)throwsException{
- JsonNoderootNode=mapper.readValue(content,JsonNode.class);
- JsonNodepath=rootNode.path(key);
- if(!path.isMissingNode()){
- returnjsonToObject(path.toString(),Date.class);
- }else{
- returnnull;
- }
- }
- /**
- *一个jsonStr包含多个java对象,将指定的key的json转化为对象数组的方法
- *@paramcontent原始的json串
- *@paramkey要转换的部分
- *@paramclazz目标类型
- *@return目标类型的对象数组
- *@throwsException
- */
- publicstatic<E>E[]jsonToArray(Stringcontent,Stringkey,Class<?extendsE>clazz)throwsException{
- JsonNoderootNode=mapper.readValue(content,JsonNode.class);
- JsonNodepath=rootNode.path(key);
- if(!path.isMissingNode()){
- returnjsonToArray(rootNode.path(key).toString(),clazz);
- }else{
- returnnull;
- }
- }
- publicstaticInteger[]jsonToArray(Stringcontent,Stringkey)throwsException{
- JsonNoderootNode=mapper.readValue(content,JsonNode.class);
- JsonNodepath=rootNode.path(key);
- if(!path.isMissingNode()){
- returnjsonToArray(path.toString(),Integer.class);
- }else{
- returnnull;
- }
- }
- /**
- *
- *@Title:jsonToList
- *@authorkaka
- *@Description:一个jsonStr包含多个java对象,将指定的key的json转化为List<E>的方法
- *@param@param<E>
- *@param@paramcontent原始的json串
- *@param@paramkey要转换的那部分json
- *@param@paramclazz目标类型
- *@param@return元素为目标类型的List
- *@param@throwsException
- *@returnList<E>
- *@throws
- */
- publicstatic<E>List<E>jsonToList(Stringcontent,Stringkey,Class<?extendsE>clazz)throwsException{
- JsonNoderootNode=mapper.readValue(content,JsonNode.class);
- JsonNodepath=rootNode.path(key);
- if(!path.isMissingNode()){
- returntoList(path.toString(),clazz);
- }else{
- returnnull;
- }
- }
- /**
- *
- *@Title:toJson
- *@authorkaka
- *@Description:对象转化成json,已知问题AaBbb中有a,a中有b,如果a和b同在一个o中将不能正常转化
- *@param@paramo要转换的对象
- *@param@returnjson格式的字符串
- *@param@throwsException
- *@returnString
- *@throws
- */
- publicstaticStringtoJson(Objecto)throwsException{
- returnmapper.writeValueAsString(o);
- }
- /**
- *
- *@Title:toJson
- *@authorkaka
- *@Description:转换成json串到out
- *@param@paramout
- *@param@paramo
- *@param@throwsException
- *@returnvoid
- *@throws
- */
- publicstaticvoidtoJson(OutputStreamout,Objecto)throwsException{
- mapper.writeValue(out,o);
- }
- /**
- *
- *@Title:toJson
- *@authorkaka
- *@Description:转换成json串到writer
- *@param@paramout
- *@param@paramo
- *@param@throwsException
- *@returnvoid
- *@throws
- */
- publicstaticvoidtoJson(Writerout,Objecto)throwsException{
- mapper.writeValue(out,o);
- }
- publicstaticStringmap2Json(Mapmap)throwsException{
- returntoJson(map);
- }
- /**
- *
- *@Title:formatJson
- *@authorkaka
- *@Description:json字符串的格式化
- *@param@paramjson
- *@param@paramfillStringUnit
- *@param@return
- *@returnString
- *@throws
- */
- publicstaticStringformatJson(Stringjson,StringfillStringUnit){
- if(json==null||json.trim().length()==0){
- returnnull;
- }
- intfixedLenth=0;
- ArrayList<String>tokenList=newArrayList<String>();
- {
- StringjsonTemp=json;
- //预读取
- while(jsonTemp.length()>0){
- Stringtoken=getToken(jsonTemp);
- jsonTemp=jsonTemp.substring(token.length());
- token=token.trim();
- tokenList.add(token);
- }
- }
- for(inti=0;i<tokenList.size();i++){
- Stringtoken=tokenList.get(i);
- intlength=token.getBytes().length;
- if(length>fixedLenth&&i<tokenList.size()-1&&tokenList.get(i+1).equals(":")){
- fixedLenth&nbs