jackson 复杂对象集合 的几种简单转换

来源:互联网 发布:caffe 利用fcn8s 分割 编辑:程序博客网 时间:2024/06/05 19:01

jackson 复杂对象集合 的几种简单转换

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 复杂 对象集合 的几种简单转换 * @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\":\"超级\",\"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("转对象:" + u);// 转集合String josn2 = "[{\"UserID\":1,\"LoginName\":\"唐工\",\"Truename\":\"超级\",\"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("转集合me:" + me);// 对象里有 集合 转换String josn3 = "{\"UserID\":1,\"LoginName\":\"唐工\",\"Truename\":\"超级\",\"Nickname\":null,\"LoginPwd\":\"E10ADC3949BA59ABBE56E057F20F883E\",\"QQ\":\"\",\"Phone\":\"\",\"Email\":null,\"Remark\":\"\",\"Account_Non_Locked\":0,\"Telelephone\":null,\"IsDelete\":0,\"RoleList\":[{\"Roleid\":0,\"Name\":\"超级管理员\",\"Show_Name\":\"超级管理员\",\"Remark\":null,\"Type\":1}]}";User u3 = mapper.readValue(josn3, User.class); // 简单方式// User u3=new Main<User>().jsonConverObject(josn3, User.class); 流方式System.out.println("转对象里有集合u3:" + u3);// 集合 对象 集合 转换String josn4 = "[{\"UserID\":1,\"LoginName\":\"唐工\",\"Truename\":\"超级\",\"Nickname\":null,\"LoginPwd\":\"E10ADC3949BA59ABBE56E057F20F883E\",\"QQ\":\"\",\"Phone\":\"\",\"Email\":null,\"Remark\":\"\",\"Account_Non_Locked\":0,\"Telelephone\":null,\"IsDelete\":0,\"RoleList\":[{\"Roleid\":0,\"Name\":\"超级管理员\",\"Show_Name\":\"超级管理员\",\"Remark\":null,\"Type\":1}]},{\"UserID\":2,\"LoginName\":\"唐工\",\"Truename\":\"超级\",\"Nickname\":null,\"LoginPwd\":\"E10ADC3949BA59ABBE56E057F20F883E\",\"QQ\":\"\",\"Phone\":\"\",\"Email\":null,\"Remark\":\"\",\"Account_Non_Locked\":0,\"Telelephone\":null,\"IsDelete\":0,\"RoleList\":[{\"Roleid\":0,\"Name\":\"超级管理员\",\"Show_Name\":\"超级管理员\",\"Remark\":null,\"Type\":1}]}]";JavaType javaType4 = mapper.getTypeFactory().constructParametricType(List.class, User.class);List<User> list = mapper.readValue(josn4, javaType4);System.out.println("集合里是对象 对象里有集合转换:" + list);}/*** * 转对象 * @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;}/*** * 转对象 * @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;}/** * 转集合 * @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: * 转对象:User [UserID=1, LoginName=唐工, Truename=超级, Nickname=null, LoginPwd=E10ADC3949BA59ABBE56E057F20F883E, QQ=, Phone=, Email=null, Remark=, Account_Non_Locked=0, Telelephone=null, Indate=null, IsDelete=0, RoleList=null] * 转集合me:[User [UserID=1, LoginName=唐工, Truename=超级, Nickname=null, LoginPwd=E10ADC3949BA59ABBE56E057F20F883E, QQ=, Phone=, Email=null, Remark=, Account_Non_Locked=0, Telelephone=null, Indate=null, IsDelete=0, RoleList=null]] * 转对象里有集合u3:User [UserID=1, LoginName=唐工, Truename=超级, Nickname=null, LoginPwd=E10ADC3949BA59ABBE56E057F20F883E, QQ=, Phone=, Email=null, Remark=, Account_Non_Locked=0, Telelephone=null, Indate=null, IsDelete=0, RoleList=[Role [Roleid=0, Name=超级管理员, Show_Name=超级管理员, Remark=null, Type=1]]] * 集合里是对象 对象里有集合转换:[User [UserID=1, LoginName=唐工, Truename=超级, Nickname=null, LoginPwd=E10ADC3949BA59ABBE56E057F20F883E, QQ=, Phone=, Email=null, Remark=, Account_Non_Locked=0, Telelephone=null, Indate=null, IsDelete=0, RoleList=[Role [Roleid=0, Name=超级管理员, Show_Name=超级管理员, Remark=null, Type=1]]], User [UserID=2, LoginName=唐工, Truename=超级, Nickname=null, LoginPwd=E10ADC3949BA59ABBE56E057F20F883E, QQ=, Phone=, Email=null, Remark=, Account_Non_Locked=0, Telelephone=null, Indate=null, IsDelete=0, RoleList=[Role [Roleid=0, Name=超级管理员, Show_Name=超级管理员, Remark=null, Type=1]]]] * */


1 0
原创粉丝点击