Java的Jackson庫(kù)中復(fù)雜對(duì)象集合的幾種簡(jiǎn)單轉(zhuǎn)換
話不多說(shuō),請(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í)或者工作能帶來(lái)一定的幫助,同時(shí)也希望多多支持腳本之家!
相關(guān)文章
mybatis向數(shù)據(jù)庫(kù)里插入記錄后自動(dòng)返回記錄ID問(wèn)題
本文介紹了在接手項(xiàng)目時(shí),對(duì)一個(gè)業(yè)務(wù)處理邏輯進(jìn)行重構(gòu)和性能優(yōu)化的經(jīng)歷,作者提到,性能問(wèn)題可能是導(dǎo)致bug的一個(gè)重要原因,作者提到,在以前的.NET項(xiàng)目中,插入記錄后系統(tǒng)會(huì)自動(dòng)刷新實(shí)體類,為其中的主鍵ID賦值,而SpringBoot項(xiàng)目mybatis也可以通過(guò)指定主鍵來(lái)優(yōu)化代碼2025-01-01
Spring Boot集成springfox-swagger2構(gòu)建restful API的方法教程
這篇文章主要給大家介紹了關(guān)于Spring Boot集成springfox-swagger2構(gòu)建restful API的相關(guān)資料,文中介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面跟著小編一起來(lái)學(xué)習(xí)學(xué)習(xí)吧。2017-06-06
解決rocketmq-client查詢手動(dòng)發(fā)送消息異常問(wèn)題
這篇文章主要介紹了解決rocketmq-client查詢手動(dòng)發(fā)送消息異常問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-08-08
SpringBoot+Vue實(shí)現(xiàn)EasyPOI導(dǎo)入導(dǎo)出的方法詳解
項(xiàng)目開(kāi)發(fā)過(guò)程中,很大的需求都有 導(dǎo)入導(dǎo)出功能。本文將利用SpringBoot+Vue實(shí)現(xiàn)EasyPOI導(dǎo)入導(dǎo)出功能,感興趣的可以了解一下2022-08-08
JavaWeb開(kāi)發(fā)入門第二篇Tomcat服務(wù)器配置講解
JavaWeb開(kāi)發(fā)入門第二篇主要介紹了Tomcat服務(wù)器配置的方法教大家如何使用Tomcat服務(wù)器,感興趣的小伙伴們可以參考一下2016-04-04
Java實(shí)現(xiàn)Token登錄驗(yàn)證的項(xiàng)目實(shí)踐
本文主要介紹了Java實(shí)現(xiàn)Token登錄驗(yàn)證的項(xiàng)目實(shí)踐,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-03-03
Java編程實(shí)現(xiàn)生成給定范圍內(nèi)不重復(fù)隨機(jī)數(shù)的方法小結(jié)
這篇文章主要介紹了Java編程實(shí)現(xiàn)生成給定范圍內(nèi)不重復(fù)隨機(jī)數(shù)的方法,結(jié)合實(shí)例形式總結(jié)分析了java基于數(shù)學(xué)運(yùn)算與判斷實(shí)現(xiàn)不重復(fù)隨機(jī)數(shù)的生成功能,需要的朋友可以參考下2017-07-07
SpringBoot如何實(shí)現(xiàn)starter原理詳解
這篇文章主要介紹了SpringBoot如何實(shí)現(xiàn)starter原理詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-06-06

