Json工具類----Jackson
程式碼部分
public class JacksonUtils {
private final static ObjectMapper obejectmapper=new ObjectMapper();
private JacksonUtils(){
}
private static ObjectMapper getInstance(){
return obejectmapper;
}
/**
* javaBean、列表陣列轉換為json字串
*/
public static String obj2json(Object obj) throws Exception {
return obejectmapper.writeValueAsString(obj);
}
/**
* javaBean、列表陣列轉換為json字串,忽略空值
*/
public static String obj2jsonIgnoreNull(Object obj) throws Exception {
ObjectMapper mapper = new ObjectMapper();
mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
return mapper.writeValueAsString(obj);
}
/**
* json 轉JavaBean
*/
public static <T> T json2pojo(String jsonString, Class<T> clazz) throws Exception {
obejectmapper.configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, true);
return obejectmapper.readValue(jsonString, clazz);
}
/**
* json字串轉換為map
*/
public static <T> Map<String, Object> json2map(String jsonString) throws Exception {
ObjectMapper mapper = new ObjectMapper();
mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
return mapper.readValue(jsonString, Map.class);
}
/**
* json字串轉換為map
*/
public static <T> Map<String, T> json2map(String jsonString, Class<T> clazz) throws Exception {
Map<String, Map<String, Object>> map = (Map<String, Map<String, Object>>) obejectmapper.readValue(jsonString, new TypeReference<Map<String, T>>() {
});
Map<String, T> result = new HashMap<String, T>();
for (Map.Entry<String, Map<String, Object>> entry : map.entrySet()) {
result.put(entry.getKey(), map2pojo(entry.getValue(), clazz));
}
return result;
}
/**
* 深度轉換json成map
*
* @param json
* @return
*/
public static Map<String, Object> json2mapDeeply(String json) throws Exception {
return json2MapRecursion(json, obejectmapper);
}
/**
* 把json解析成list,如果list內部的元素存在jsonString,繼續解析
*
* @param json
* @param mapper 解析工具
* @return
* @throws Exception
*/
private static List<Object> json2ListRecursion(String json, ObjectMapper mapper) throws Exception {
if (json == null) {
return null;
}
List<Object> list = mapper.readValue(json, List.class);
for (Object obj : list) {
if (obj != null && obj instanceof String) {
String str = (String) obj;
if (str.startsWith("[")) {
obj = json2ListRecursion(str, mapper);
} else if (obj.toString().startsWith("{")) {
obj = json2MapRecursion(str, mapper);
}
}
}
return list;
}
/**
* 把json解析成map,如果map內部的value存在jsonString,繼續解析
*
* @param json
* @param mapper
* @return
* @throws Exception
*/
private static Map<String, Object> json2MapRecursion(String json, ObjectMapper mapper) throws Exception {
if (json == null) {
return null;
}
Map<String, Object> map = mapper.readValue(json, Map.class);
for (Map.Entry<String, Object> entry : map.entrySet()) {
Object obj = entry.getValue();
if (obj != null && obj instanceof String) {
String str = ((String) obj);
if (str.startsWith("[")) {
List<?> list = json2ListRecursion(str, mapper);
map.put(entry.getKey(), list);
} else if (str.startsWith("{")) {
Map<String, Object> mapRecursion = json2MapRecursion(str, mapper);
map.put(entry.getKey(), mapRecursion);
}
}
}
return map;
}
/**
* 與javaBean json陣列字串轉換為列表
*/
public static <T> List<T> json2list(String jsonArrayStr, Class<T> clazz) throws Exception {
JavaType javaType = getCollectionType(ArrayList.class, clazz);
List<T> lst = (List<T>) obejectmapper.readValue(jsonArrayStr, javaType);
return lst;
}
/**
* 獲取泛型的Collection Type
*
* @param collectionClass 泛型的Collection
* @param elementClasses 元素類
* @return JavaType Java型別
* @since 1.0
*/
public static JavaType getCollectionType(Class<?> collectionClass, Class<?>... elementClasses) {
return obejectmapper.getTypeFactory().constructParametricType(collectionClass, elementClasses);
}
/**
* map 轉JavaBean
*/
public static <T> T map2pojo(Map map, Class<T> clazz) {
return obejectmapper.convertValue(map, clazz);
}
/**
* map 轉json
*
* @param map
* @return
*/
public static String mapToJson(Map map) {
try {
return obejectmapper.writeValueAsString(map);
} catch (Exception e) {
e.printStackTrace();
}
return "";
}
/**
* map 轉JavaBean
*/
public static <T> T obj2pojo(Object obj, Class<T> clazz) {
return obejectmapper.convertValue(obj, clazz);
}
}
相關文章
- Java JSON處理類庫JacksonJavaJSON
- 常用Json工具類JSON
- XML轉化為json工具類XMLJSON
- Jackson Gson Json.simple 比較JSON
- Java讀取Json檔案工具類JavaJSON
- 使用Jackson在Java中處理JSONJavaJSON
- json解析效能比較(gson與jackson)JSON
- 終極CRUD-3-用Jackson解析jsonJSON
- 一文搞定Jackson解析JSON資料JSON
- JSON解析器之Gson、FastJson、JacksonJSONAST
- 用Jackson自定義JSON反序列化JSON
- fastJson和jackson轉json的區別ASTJSON
- Json反序列化物件通用工具類JSON物件
- json字串與Object、List、Map的互轉工具類JSON字串Object
- Jackson的使用和JSON日期型別的顯示JSON型別
- Spring統一返回Json工具類,帶分頁資訊SpringJSON
- 1. 初識Jackson -- 世界上最好的JSON庫JSON
- json - 使用jackson進行序列化/反序列化JSON
- jackson進行json序列化和反序列化JSON
- 將任意格式轉換為JSON資料格式的工具類JSON
- 2. 媽呀,Jackson原來是這樣寫JSON的JSON
- 從json-lib轉成jackson的遇到的問題JSON
- 類轉json的基類實現JSON
- json 組裝工具JSON
- 基於Spring Security Role過濾Jackson JSON輸出內容SpringJSON
- GreenDao 工具類 --- 使用 Json 快速生成 Bean、表及其結構,"炒雞"快!JSONBean
- Java 下的 JSON庫效能比較:JSON.simple vs. GSON vs. Jackson vs. JSONPJavaJSON
- Jackson 解析json資料之忽略解析欄位註解@JsonIgnorePropertiesJSON
- json 按照欄位分類JSON
- 工具類
- 7. Jackson用樹模型處理JSON是必備技能,不信你看模型JSON
- 3. 懂了這些,方敢在簡歷上說會用Jackson寫JSONJSON
- FastJson、Jackson、Gson進行Java物件轉換Json的細節處理ASTJSONJava物件
- Jackson JSON包在從物件對映到Json字串過程的迴圈依賴問題-分析與解決JSON物件字串
- jackson學習之十(終篇):springboot整合(配置類)Spring Boot
- 線上JSON轉BigQuery工具JSON
- 幾個有用的JSON工具JSON
- 自寫Json轉換工具JSON