日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

总结的一些json格式和对象/String/Map/List等的互转工具类

發布時間:2025/4/16 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 总结的一些json格式和对象/String/Map/List等的互转工具类 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?總結的一些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包

  • package?com.zuidaima.util.json;??
  • import?java.io.InputStream;??
  • import?java.io.OutputStream;??
  • import?java.io.Reader;??
  • import?java.io.Writer;??
  • import?java.net.URL;??
  • import?java.util.ArrayList;??
  • import?java.util.Date;??
  • import?java.util.HashMap;??
  • import?java.util.List;??
  • import?java.util.Map;??
  • ??
  • import?org.codehaus.jackson.JsonNode;??
  • import?org.codehaus.jackson.map.DeserializationConfig;??
  • import?org.codehaus.jackson.map.ObjectMapper;??
  • import?org.codehaus.jackson.map.annotate.JsonSerialize;??
  • import?org.codehaus.jackson.map.type.TypeFactory;??
  • ??
  • public?class?JsonUtil?{??
  • ??
  • ????private?static?ObjectMapper?mapper?=?new?ObjectMapper();??
  • ????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??
  • ?????*?@author?kaka???
  • ?????*?@Description:?判斷?jsonString是否可以轉換成json格式?
  • ?????*?@param?@param?jsonString?
  • ?????*?@param?@return?????
  • ?????*?@return?boolean????
  • ?????*?@throws?
  • ?????*/??
  • ????public?static?boolean?isJSON(String?jsonString)?{??
  • ????????return?mapper.canSerialize(HashMap.class);??
  • ????}??
  • ??
  • ????public?static?<V>?Map<String,?V>?toMap(String?content,Class<??extends?V>?clazz)?throws?Exception?{??
  • ????????return?mapper.readValue(content,?TypeFactory.mapType(HashMap.class,String.class,?clazz));??
  • ????}??
  • ??
  • ????public?static?<V>?Map<String,?V>?toMap(InputStream?is,Class<??extends?V>?clazz)?throws?Exception?{??
  • ????????return?mapper.readValue(is,?TypeFactory.mapType(HashMap.class,String.class,?clazz));??
  • ????}??
  • ??
  • ????public?static?<V>?Map<String,?V>?toMap(Reader?is,?Class<??extends?V>?clazz)throws?Exception?{??
  • ????????return?mapper.readValue(is,?TypeFactory.mapType(HashMap.class,String.class,?clazz));??
  • ????}??
  • ??
  • ????public?static?<V>?Map<String,?V>?toMap(URL?is,?Class<??extends?V>?clazz)throws?Exception?{??
  • ????????return?mapper.readValue(is,?TypeFactory.mapType(HashMap.class,String.class,?clazz));??
  • ????}??
  • ??
  • ??
  • ????public?static?<E>?List<E>?toList(String?content,?Class<??extends?E>?clazz)throws?Exception?{??
  • ????????return?jsonToList(content,?clazz);??
  • ????}??
  • ??????
  • ????/**?
  • ?????*??
  • ?????*?@Title:?jsonToList??
  • ?????*?@author?kaka???
  • ?????*?@Description:?json轉list?,?List的元素類型,會一并轉換完成?如List<User>?
  • ?????*?@param?@param?<E>?
  • ?????*?@param?@param?content?
  • ?????*?@param?@param?clazz?
  • ?????*?@param?@return?元素類型為E的List?
  • ?????*?@param?@throws?Exception?????
  • ?????*?@return?List<E>????
  • ?????*?@throws?
  • ?????*/??
  • ????public?static?<E>?List<E>?jsonToList(String?content,Class<??extends?E>?clazz)?throws?Exception?{??
  • ????????return?mapper.readValue(content,?TypeFactory.collectionType(ArrayList.class,?clazz));??
  • ????}??
  • ????/**?
  • ?????*??
  • ?????*?@Title:?jsonToIntArray??
  • ?????*?@author?kaka???
  • ?????*?@Description:?json轉整形數組??
  • ?????*?@param?@param?content?
  • ?????*?@param?@return?
  • ?????*?@param?@throws?Exception?????
  • ?????*?@return?Integer[]????
  • ?????*?@throws?
  • ?????*/??
  • ????public?static?Integer[]?jsonToIntArray(String?content)?throws?Exception?{??
  • ????????return?jsonToArray(content,?Integer.class);??
  • ????}??
  • ??
  • ????public?static?Integer[]?jsonToIntArray(String?content,String?key)?throws?Exception?{??
  • ????????return?jsonToArray(content,?key,?Integer.class);??
  • ????}??
  • ????/**?
  • ?????*??
  • ?????*?@Title:?jsonToArray??
  • ?????*?@author?kaka???
  • ?????*?@Description:?json轉對象數組???
  • ?????*?@param?@param?<E>?
  • ?????*?@param?@param?content?
  • ?????*?@param?@param?clazz?數組中的對象類型?
  • ?????*?@param?@return?E類型的數組,如User[]?
  • ?????*?@param?@throws?Exception?????
  • ?????*?@return?E[]????
  • ?????*?@throws?
  • ?????*/??
  • ????public?static?<E>?E[]?jsonToArray(String?content,?Class<??extends?E>?clazz)throws?Exception?{??
  • ????????if(content?!=?null){??
  • ????????????return?mapper.readValue(content,?TypeFactory.arrayType(clazz));??
  • ????????}else{??
  • ????????????return?null;??
  • ????????}??
  • ????}??
  • ??
  • ????/**?
  • ?????*??
  • ?????*?@Title:?fromJsonToObject??
  • ?????*?@author?kaka???
  • ?????*?@Description:?json轉java對象,為兼容原util類?
  • ?????*?@param?@param?<T>?
  • ?????*?@param?@param?content?
  • ?????*?@param?@param?clazz?目標類型?
  • ?????*?@param?@return?
  • ?????*?@param?@throws?Exception?????
  • ?????*?@return?T??返回類型為T的對象?
  • ?????*?@throws?
  • ?????*/??
  • ????public?static?<T>?T?fromJsonToObject(String?content,Class<??extends?T>?clazz)?throws?Exception?{??
  • ????????return?jsonToObject(content,?clazz);??
  • ????}??
  • ??
  • ????public?static?<T>?T?jsonToObject(String?content,?Class<??extends?T>?clazz)throws?Exception?{??
  • ????????return?mapper.readValue(content,?clazz);??
  • ????}??
  • ??
  • ????/**?
  • ?????*??
  • ?????*?@Title:?jsonToObject??
  • ?????*?@author?kaka???
  • ?????*?@Description:?一個jsonStr包含多個java對象,取其中一個轉化為java對象的方法???
  • ?????*?@param?@param?<T>?
  • ?????*?@param?@param?content?json格式的字符串?
  • ?????*?@param?@param?key?要轉換的子json串的key?
  • ?????*?@param?@param?clazz?目標類型?
  • ?????*?@param?@return?返回類型為T的對象?
  • ?????*?@param?@throws?Exception?????
  • ?????*?@return?T????
  • ?????*?@throws?
  • ?????*/??
  • ????public?static?<T>?T?jsonToObject(String?content,?String?key,Class<??extends?T>?clazz)?throws?Exception?{??
  • ????????JsonNode?rootNode?=?mapper.readValue(content,?JsonNode.class);??
  • ????????JsonNode?path?=?rootNode.path(key);??
  • ????????if(!path.isMissingNode()){??
  • ????????????return?jsonToObject(path.toString(),?clazz);??
  • ????????}else{??
  • ????????????return?null;??
  • ????????}??
  • ????}??
  • ??????
  • ????public?static?Integer?getInt(String?content,?String?key)?throws?Exception?{??
  • ????????JsonNode?rootNode?=?mapper.readValue(content,?JsonNode.class);??
  • ????????JsonNode?path?=?rootNode.path(key);??
  • ????????if(!path.isMissingNode()){??
  • ????????????return?jsonToObject(path.toString(),?Integer.class);??
  • ????????}else{??
  • ????????????return?null;??
  • ????????}??
  • ????}??
  • ??????
  • ????public?static?String?getString(String?content,?String?key)?throws?Exception?{??
  • ????????JsonNode?rootNode?=?mapper.readValue(content,?JsonNode.class);??
  • ????????JsonNode?path?=?rootNode.path(key);??
  • ????????if(!path.isMissingNode()){??
  • ????????????return?jsonToObject(rootNode.path(key).toString(),?String.class);??
  • ????????}else{??
  • ????????????return?null;??
  • ????????}??
  • ????}??
  • ??????
  • ????public?static?Date?getDate(String?content,?String?key)?throws?Exception?{??
  • ????????JsonNode?rootNode?=?mapper.readValue(content,?JsonNode.class);??
  • ????????JsonNode?path?=?rootNode.path(key);??
  • ????????if(!path.isMissingNode()){??
  • ????????????return?jsonToObject(path.toString(),?Date.class);??
  • ????????}else{??
  • ????????????return?null;??
  • ????????}??
  • ????}??
  • ??
  • ????/**?
  • ?????*?一個jsonStr包含多個java對象,將指定的key的json轉化為對象數組的方法?
  • ?????*?@param?content?原始的json串?
  • ?????*?@param?key?要轉換的部分?
  • ?????*?@param?clazz?目標類型?
  • ?????*?@return?目標類型的對象數組?
  • ?????*?@throws?Exception?
  • ?????*/??
  • ????public?static?<E>?E[]?jsonToArray(String?content,?String?key,Class<??extends?E>?clazz)?throws?Exception?{??
  • ????????JsonNode?rootNode?=?mapper.readValue(content,?JsonNode.class);??
  • ????????JsonNode?path?=?rootNode.path(key);??
  • ????????if(!path.isMissingNode()){??
  • ????????????return?jsonToArray(rootNode.path(key).toString(),?clazz);??
  • ????????}else{??
  • ????????????return?null;??
  • ????????}??
  • ????}??
  • ??????
  • ????public?static?Integer[]?jsonToArray(String?content,?String?key)?throws?Exception?{??
  • ????????JsonNode?rootNode?=?mapper.readValue(content,?JsonNode.class);??
  • ????????JsonNode?path?=?rootNode.path(key);??
  • ????????if(!path.isMissingNode()){??
  • ????????????return?jsonToArray(path.toString(),?Integer.class);??
  • ????????}else{??
  • ????????????return?null;??
  • ????????}??
  • ????}??
  • ??
  • ????/**?
  • ?????*??
  • ?????*?@Title:?jsonToList??
  • ?????*?@author?kaka???
  • ?????*?@Description:?一個jsonStr包含多個java對象,將指定的key的json轉化為List<E>的方法??
  • ?????*?@param?@param?<E>?
  • ?????*?@param?@param?content?原始的json串?
  • ?????*?@param?@param?key?要轉換的那部分json?
  • ?????*?@param?@param?clazz?目標類型?
  • ?????*?@param?@return?元素為目標類型的List?
  • ?????*?@param?@throws?Exception?????
  • ?????*?@return?List<E>????
  • ?????*?@throws?
  • ?????*/??
  • ????public?static?<E>?List<E>?jsonToList(String?content,?String?key,Class<??extends?E>?clazz)?throws?Exception?{??
  • ????????JsonNode?rootNode?=?mapper.readValue(content,?JsonNode.class);??
  • ????????JsonNode?path?=?rootNode.path(key);??
  • ????????if(!path.isMissingNode()){??
  • ????????????return?toList(path.toString(),?clazz);??
  • ????????}else{??
  • ????????????return?null;??
  • ????????}??
  • ????}??
  • ??
  • ????/**?
  • ?????*??
  • ?????*?@Title:?toJson??
  • ?????*?@author?kaka???
  • ?????*?@Description:?對象轉化成json,已知問題?A?a?B?b?b中有a,a中有b?,?如果a和b同在一個o中將不能正常轉化????
  • ?????*?@param?@param?o??要轉換的對象?
  • ?????*?@param?@return?json格式的字符串?
  • ?????*?@param?@throws?Exception?????
  • ?????*?@return?String????
  • ?????*?@throws?
  • ?????*/??
  • ????public?static?String?toJson(Object?o)?throws?Exception?{??
  • ????????return?mapper.writeValueAsString(o);??
  • ????}??
  • ??
  • ????/**?
  • ?????*??
  • ?????*?@Title:?toJson??
  • ?????*?@author?kaka???
  • ?????*?@Description:?轉換成json串到out????
  • ?????*?@param?@param?out?
  • ?????*?@param?@param?o?
  • ?????*?@param?@throws?Exception?????
  • ?????*?@return?void????
  • ?????*?@throws?
  • ?????*/??
  • ????public?static?void?toJson(OutputStream?out,?Object?o)?throws?Exception?{??
  • ????????mapper.writeValue(out,?o);??
  • ????}??
  • ??
  • ????/**?
  • ?????*??
  • ?????*?@Title:?toJson??
  • ?????*?@author?kaka???
  • ?????*?@Description:?轉換成json串到writer????
  • ?????*?@param?@param?out?
  • ?????*?@param?@param?o?
  • ?????*?@param?@throws?Exception?????
  • ?????*?@return?void????
  • ?????*?@throws?
  • ?????*/??
  • ????public?static?void?toJson(Writer?out,?Object?o)?throws?Exception?{??
  • ????????mapper.writeValue(out,?o);??
  • ????}??
  • ??????
  • ????public?static?String?map2Json(Map?map)?throws?Exception{??
  • ????????return?toJson(map);??
  • ????}??
  • ????/**?
  • ?????*??
  • ?????*?@Title:?formatJson??
  • ?????*?@author?kaka???
  • ?????*?@Description:?json字符串的格式化???
  • ?????*?@param?@param?json?
  • ?????*?@param?@param?fillStringUnit?
  • ?????*?@param?@return?????
  • ?????*?@return?String????
  • ?????*?@throws?
  • ?????*/??
  • ????public?static?String?formatJson(String?json,?String?fillStringUnit)?{???
  • ????????if?(json?==?null?||?json.trim().length()?==?0)?{???
  • ????????????return?null;???
  • ????????}???
  • ???????????
  • ????????int?fixedLenth?=?0;???
  • ????????ArrayList<String>?tokenList?=?new?ArrayList<String>();???
  • ????????{???
  • ????????????String?jsonTemp?=?json;???
  • ????????????//預讀取???
  • ????????????while?(jsonTemp.length()?>?0)?{???
  • ????????????????String?token?=?getToken(jsonTemp);???
  • ????????????????jsonTemp?=?jsonTemp.substring(token.length());???
  • ????????????????token?=?token.trim();???
  • ????????????????tokenList.add(token);???
  • ????????????}??????????????
  • ????????}???
  • ???????????
  • ????????for?(int?i?=?0;?i?<?tokenList.size();?i++)?{???
  • ????????????String?token?=?tokenList.get(i);???
  • ????????????int?length?=?token.getBytes().length;???
  • ????????????if?(length?>?fixedLenth?&&?i?<?tokenList.size()?-?1?&&?tokenList.get(i?+?1).equals(":"))?{???
  • ????????????????fixedLenth?=?length;???
  • ????????????}???
  • ????????}???
  • ???????????
  • ????????StringBuilder?buf?=?new?StringBuilder();???
  • ????????int?count?=?0;???
  • ????????for?(int?i?=?0;?i?<?tokenList.size();?i++)?{???
  • ???????????????
  • ????????????String?token?=?tokenList.get(i);???
  • ???????????????
  • ????????????if?(token.equals(","))?{???
  • ????????????????buf.append(token);???
  • ????????????????doFill(buf,?count,?fillStringUnit);???
  • ????????????????continue;???
  • ????????????}???
  • ????????????if?(token.equals(":"))?{???
  • ????????????????buf.append("?").append(token).append("?");???
  • ????????????????continue;???
  • ????????????}???
  • ????????????if?(token.equals("{"))?{???
  • ????????????????String?nextToken?=?tokenList.get(i?+?1);???
  • ????????????????if?(nextToken.equals("}"))?{???
  • ????????????????????i++;???
  • ????????????????????buf.append("{?}");???
  • ????????????????}?else?{???
  • ????????????????????count++;???
  • ????????????????????buf.append(token);???
  • ????????????????????doFill(buf,?count,?fillStringUnit);???
  • ????????????????}???
  • ????????????????continue;???
  • ????????????}???
  • ????????????if?(token.equals("}"))?{???
  • ????????????????count--;???
  • ????????????????doFill(buf,?count,?fillStringUnit);???
  • ????????????????buf.append(token);???
  • ????????????????continue;???
  • ????????????}???
  • ????????????if?(token.equals("["))?{???
  • ????????????????String?nextToken?=?tokenList.get(i?+?1);???
  • ????????????????if?(nextToken.equals("]"))?{???
  • ????????????????????i++;???
  • ????????????????????buf.append("[?]");???
  • ????????????????}?else?{???
  • ????????????????????count++;???
  • ????????????????????buf.append(token);???
  • ????????????????????doFill(buf,?count,?fillStringUnit);???
  • ????????????????}???
  • ????????????????continue;???
  • ????????????}???
  • ????????????if?(token.equals("]"))?{???
  • ????????????????count--;???
  • ????????????????doFill(buf,?count,?fillStringUnit);???
  • ????????????????buf.append(token);???
  • ????????????????continue;???
  • ????????????}???
  • ???????????????
  • ????????????buf.append(token);???
  • ????????????//左對齊???
  • ????????????if?(i?<?tokenList.size()?-?1?&&?tokenList.get(i?+?1).equals(":"))?{???
  • ????????????????int?fillLength?=?fixedLenth?-?token.getBytes().length;???
  • ????????????????if?(fillLength?>?0)?{???
  • ????????????????????for(int?j?=?0;?j?<?fillLength;?j++)?{???
  • ????????????????????????buf.append("?");???
  • ????????????????????}???
  • ????????????????}???
  • ????????????}???
  • ????????}???
  • ????????return?buf.toString();???
  • ????}???
  • ???????
  • ????private?static?String?getToken(String?json)?{???
  • ????????StringBuilder?buf?=?new?StringBuilder();???
  • ????????boolean?isInYinHao?=?false;???
  • ????????while?(json.length()?>?0)?{???
  • ????????????String?token?=?json.substring(0,?1);???
  • ????????????json?=?json.substring(1);???
  • ???????????????
  • ????????????if?(!isInYinHao?&&????
  • ????????????????????(token.equals(":")?||?token.equals("{")?||?token.equals("}")????
  • ????????????????????????????||?token.equals("[")?||?token.equals("]")???
  • ????????????????????????????||?token.equals(",")))?{???
  • ????????????????if?(buf.toString().trim().length()?==?0)?{?????????????????????
  • ????????????????????buf.append(token);???
  • ????????????????}???
  • ???????????????????
  • ????????????????break;???
  • ????????????}???
  • ???
  • ????????????if?(token.equals("\\"))?{???
  • ????????????????buf.append(token);???
  • ????????????????buf.append(json.substring(0,?1));???
  • ????????????????json?=?json.substring(1);???
  • ????????????????continue;???
  • ????????????}???
  • ????????????if?(token.equals("\""))?{???
  • ????????????????buf.append(token);???
  • ????????????????if?(isInYinHao)?{???
  • ????????????????????break;???
  • ????????????????}?else?{???
  • ????????????????????isInYinHao?=?true;???
  • ????????????????????continue;???
  • ????????????????}??????????????????
  • ????????????}???
  • ????????????buf.append(token);???
  • ????????}???
  • ????????return?buf.toString();???
  • ????}???
  • ???
  • ????private?static?void?doFill(StringBuilder?buf,?int?count,?String?fillStringUnit)?{???
  • ????????buf.append("\n");???
  • ????????for?(int?i?=?0;?i?<?count;?i++)?{???
  • ????????????buf.append(fillStringUnit);???
  • ????????}???
  • ????} ????
  • } ?
  • ?

    引用原文:https://blog.csdn.net/springmvc_springdata/article/details/44056043

    ?

    寫博客是為了記住自己容易忘記的東西,另外也是對自己工作的總結,文章可以轉載,無需版權。希望盡自己的努力,做到更好,大家一起努力進步!

    如果有什么問題,歡迎大家一起探討,代碼如有問題,歡迎各位大神指正!

    轉載于:https://www.cnblogs.com/summary-2017/p/8965074.html

    總結

    以上是生活随笔為你收集整理的总结的一些json格式和对象/String/Map/List等的互转工具类的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。