Java的Jackson庫中復(fù)雜對(duì)象集合的幾種簡(jiǎn)單轉(zhuǎn)換
更新時(shí)間:2017年02月08日 11:56:00 作者:renjiaqi_500Server
本文主要介紹了Java的Jackson庫中復(fù)雜對(duì)象集合的幾種簡(jiǎn)單轉(zhuǎn)換。具有很好的參考價(jià)值,下面跟著小編一起來看下吧
話不多說,請(qǐng)看代碼:
package com; import java.io.BufferedReader; import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStreamReader; import java.util.List; import com.fasterxml.jackson.core.JsonParseException; import com.fasterxml.jackson.databind.JavaType; import com.fasterxml.jackson.databind.JsonMappingException; import com.fasterxml.jackson.databind.ObjectMapper; /** * jackson 復(fù)雜 對(duì)象集合 的幾種簡(jiǎn)單轉(zhuǎn)換 * @author lenovo * * @param <T> */ public class Main<T> { static ObjectMapper mapper = new ObjectMapper(); public static void main(String[] args) throws JsonParseException, JsonMappingException, IOException { String josn = "{\"UserID\":1,\"LoginName\":\"唐工\",\"Truename\":\"超級(jí)\",\"Nickname\":null,\"LoginPwd\":\"E10ADC3949BA59ABBE56E057F20F883E\",\"QQ\":\"\",\"Phone\":\"\",\"Email\":null,\"Remark\":\"\",\"Account_Non_Locked\":0,\"Telelephone\":null,\"IsDelete\":0}"; User u = mapper.readValue(josn, User.class); // User u=new Main<User>().jsonStreamConverObject(josn, User.class); System.out.println("轉(zhuǎn)對(duì)象:" + u); // 轉(zhuǎn)集合 String josn2 = "[{\"UserID\":1,\"LoginName\":\"唐工\",\"Truename\":\"超級(jí)\",\"Nickname\":null,\"LoginPwd\":\"E10ADC3949BA59ABBE56E057F20F883E\",\"QQ\":\"\",\"Phone\":\"\",\"Email\":null,\"Remark\":\"\",\"Account_Non_Locked\":0,\"Telelephone\":null,\"IsDelete\":0}]"; JavaType javaType = mapper.getTypeFactory().constructParametricType( List.class, User.class); List<User> me = mapper.readValue(josn2, javaType); System.out.println("轉(zhuǎn)集合me:" + me); // 對(duì)象里有 集合 轉(zhuǎn)換 String josn3 = "{\"UserID\":1,\"LoginName\":\"唐工\",\"Truename\":\"超級(jí)\",\"Nickname\":null,\"LoginPwd\":\"E10ADC3949BA59ABBE56E057F20F883E\",\"QQ\":\"\",\"Phone\":\"\",\"Email\":null,\"Remark\":\"\",\"Account_Non_Locked\":0,\"Telelephone\":null,\"IsDelete\":0,\"RoleList\":[{\"Roleid\":0,\"Name\":\"超級(jí)管理員\",\"Show_Name\":\"超級(jí)管理員\",\"Remark\":null,\"Type\":1}]}"; User u3 = mapper.readValue(josn3, User.class); // 簡(jiǎn)單方式 // User u3=new Main<User>().jsonConverObject(josn3, User.class); 流方式 System.out.println("轉(zhuǎn)對(duì)象里有集合u3:" + u3); // 集合 對(duì)象 集合 轉(zhuǎn)換 String josn4 = "[{\"UserID\":1,\"LoginName\":\"唐工\",\"Truename\":\"超級(jí)\",\"Nickname\":null,\"LoginPwd\":\"E10ADC3949BA59ABBE56E057F20F883E\",\"QQ\":\"\",\"Phone\":\"\",\"Email\":null,\"Remark\":\"\",\"Account_Non_Locked\":0,\"Telelephone\":null,\"IsDelete\":0,\"RoleList\":[{\"Roleid\":0,\"Name\":\"超級(jí)管理員\",\"Show_Name\":\"超級(jí)管理員\",\"Remark\":null,\"Type\":1}]},{\"UserID\":2,\"LoginName\":\"唐工\",\"Truename\":\"超級(jí)\",\"Nickname\":null,\"LoginPwd\":\"E10ADC3949BA59ABBE56E057F20F883E\",\"QQ\":\"\",\"Phone\":\"\",\"Email\":null,\"Remark\":\"\",\"Account_Non_Locked\":0,\"Telelephone\":null,\"IsDelete\":0,\"RoleList\":[{\"Roleid\":0,\"Name\":\"超級(jí)管理員\",\"Show_Name\":\"超級(jí)管理員\",\"Remark\":null,\"Type\":1}]}]"; JavaType javaType4 = mapper.getTypeFactory().constructParametricType( List.class, User.class); List<User> list = mapper.readValue(josn4, javaType4); System.out.println("集合里是對(duì)象 對(duì)象里有集合轉(zhuǎn)換:" + list); } /*** * 轉(zhuǎn)對(duì)象 * @param josn * @param clz * @return */ public T jsonStreamConverObject(String josn, Class<T> clz) { T t = null; // ObjectMapper jacksonMapper = new ObjectMapper(); InputStreamReader in = new InputStreamReader(new ByteArrayInputStream( josn.getBytes())); BufferedReader streamReader = new BufferedReader(in); StringBuilder buff = new StringBuilder(); String inputStr; try { while ((inputStr = streamReader.readLine()) != null) buff.append(inputStr); // ObjectMapper mapper = new ObjectMapper(); t = mapper.readValue(buff.toString(), clz); } catch (IOException e) { e.printStackTrace(); } return t; } /*** * 轉(zhuǎn)對(duì)象 * @param josn * @param clz * @return */ public T jsonConverObject(String josn, Class<T> clz) { T t = null; try { t = mapper.readValue(josn, clz); } catch (JsonParseException e) { e.printStackTrace(); } catch (JsonMappingException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return t; } /** * 轉(zhuǎn)集合 * @param josn * @param clz * @return */ public List<T> jsonConverList(String josn, Class<T> clz) { List<T> me = null; try { // jacksonMapper // .disable(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES); // jacksonMapper.enableDefaultTyping(); // jacksonMapper.setVisibility(JsonMethod.FIELD,JsonAutoDetect.Visibility.ANY); // jacksonMapper.configure(SerializationConfig.Feature.INDENT_OUTPUT, // false);//格式化 // jacksonMapper.setSerializationInclusion(JsonSerialize.Inclusion.NON_NULL); // jacksonMapper.configure(SerializationConfig.Feature.FAIL_ON_EMPTY_BEANS, // false); JavaType javaType = mapper.getTypeFactory() .constructParametricType(List.class, clz);// clz.selGenType().getClass() me = mapper.readValue(josn, javaType); } catch (JsonParseException e) { e.printStackTrace(); } catch (JsonMappingException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return me; } } /** * output: * 轉(zhuǎn)對(duì)象:User [UserID=1, LoginName=唐工, Truename=超級(jí), Nickname=null, LoginPwd=E10ADC3949BA59ABBE56E057F20F883E, QQ=, Phone=, Email=null, Remark=, Account_Non_Locked=0, Telelephone=null, Indate=null, IsDelete=0, RoleList=null] * 轉(zhuǎn)集合me:[User [UserID=1, LoginName=唐工, Truename=超級(jí), Nickname=null, LoginPwd=E10ADC3949BA59ABBE56E057F20F883E, QQ=, Phone=, Email=null, Remark=, Account_Non_Locked=0, Telelephone=null, Indate=null, IsDelete=0, RoleList=null]] * 轉(zhuǎn)對(duì)象里有集合u3:User [UserID=1, LoginName=唐工, Truename=超級(jí), Nickname=null, LoginPwd=E10ADC3949BA59ABBE56E057F20F883E, QQ=, Phone=, Email=null, Remark=, Account_Non_Locked=0, Telelephone=null, Indate=null, IsDelete=0, RoleList=[Role [Roleid=0, Name=超級(jí)管理員, Show_Name=超級(jí)管理員, Remark=null, Type=1]]] * 集合里是對(duì)象 對(duì)象里有集合轉(zhuǎn)換:[User [UserID=1, LoginName=唐工, Truename=超級(jí), Nickname=null, LoginPwd=E10ADC3949BA59ABBE56E057F20F883E, QQ=, Phone=, Email=null, Remark=, Account_Non_Locked=0, Telelephone=null, Indate=null, IsDelete=0, RoleList=[Role [Roleid=0, Name=超級(jí)管理員, Show_Name=超級(jí)管理員, Remark=null, Type=1]]], User [UserID=2, LoginName=唐工, Truename=超級(jí), Nickname=null, LoginPwd=E10ADC3949BA59ABBE56E057F20F883E, QQ=, Phone=, Email=null, Remark=, Account_Non_Locked=0, Telelephone=null, Indate=null, IsDelete=0, RoleList=[Role [Roleid=0, Name=超級(jí)管理員, Show_Name=超級(jí)管理員, Remark=null, Type=1]]]] * */
以上就是本文的全部?jī)?nèi)容,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來一定的幫助,同時(shí)也希望多多支持腳本之家!
相關(guān)文章
利用數(shù)組實(shí)現(xiàn)棧(Java實(shí)現(xiàn))
這篇文章主要為大家詳細(xì)介紹了利用數(shù)組實(shí)現(xiàn)棧,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-09-09有關(guān)Java常見的誤解小結(jié)(來看一看)
下面小編就為大家?guī)硪黄嘘P(guān)Java常見的誤解小結(jié)(來看一看)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-05-05一文搞懂Java MD5算法的原理及實(shí)現(xiàn)
MD5信息摘要算法,一種被廣泛使用的密碼散列函數(shù),可以產(chǎn)生出一個(gè)128位(16字節(jié))的散列值(hash value),用于確保信息傳輸完整一致。本文將詳解MD5算法的原理及實(shí)現(xiàn),感興趣的可以了解一下2022-06-06SpringMVC轉(zhuǎn)發(fā)與重定向參數(shù)傳遞的實(shí)現(xiàn)詳解
這篇文章主要介紹了SpringMVC轉(zhuǎn)發(fā)與重定向參數(shù)傳遞,對(duì)于重定向,可以通過FlashMap或RedirectAttributes來在請(qǐng)求間傳遞數(shù)據(jù),因?yàn)橹囟ㄏ蛏婕皟蓚€(gè)獨(dú)立的HTTP請(qǐng)求,而轉(zhuǎn)發(fā)則在同一請(qǐng)求內(nèi)進(jìn)行,數(shù)據(jù)可以直接通過HttpServletRequest共享,需要的朋友可以參考下2022-07-07java地理坐標(biāo)系及投影間轉(zhuǎn)換代碼示例
在地圖投影中,經(jīng)常需要將坐標(biāo)從不同的坐標(biāo)系之間進(jìn)行轉(zhuǎn)換,下面這篇文章主要給大家介紹了關(guān)于java地理坐標(biāo)系及投影間轉(zhuǎn)換的相關(guān)資料,需要的朋友可以參考下2024-08-08