jackson工具类
发布时间:2020-12-15 03:13:53 所属栏目:Java 来源:网络整理
导读:今天PHP站长网 52php.cn把收集自互联网的代码分享给大家,仅供参考。 jackson工具类 没有闭门造车.解决了lazyload的问题 JpaLazyIntrospector.java?? ? ? package com.rf.dtd.systemsupport.reportmodel.Util;import java
以下代码由PHP站长网 52php.cn收集自互联网 现在PHP站长网小编把它分享给大家,仅供参考
jackson工具类
没有闭门造车.解决了lazyload的问题 JpaLazyIntrospector.java?? ? ?package com.rf.dtd.systemsupport.reportmodel.Util; import java.lang.annotation.Annotation; import javax.persistence.Basic; import javax.persistence.ElementCollection; import javax.persistence.FetchType; import javax.persistence.ManyToMany; import javax.persistence.ManyToOne; import javax.persistence.OneToMany; import javax.persistence.OneToOne; import org.codehaus.jackson.map.introspect.Annotated; import org.codehaus.jackson.map.introspect.JacksonAnnotationIntrospector; class JpaLazyIntrospector extends JacksonAnnotationIntrospector { public boolean isHandled(Annotation ann) { boolean handled = super.isHandled(ann); if (!handled) { handled = ann.toString().startsWith("@javax.persistence"); } if (!handled) { handled = ann.annotationType().equals(JsonLazy.class); } return handled; } protected boolean _isIgnorable(Annotated a) { boolean ignor = super._isIgnorable(a); if (!ignor) { ignor = isLazy(a); } return ignor; } private boolean isLazy(Annotated a) { boolean lazy = false; JsonLazy jsonLazy = (JsonLazy)a.getAnnotation(JsonLazy.class); if (jsonLazy != null) { return false; } Basic basic = (Basic)a.getAnnotation(Basic.class); if ((basic != null) && (basic.fetch() == FetchType.LAZY)) { lazy = true; } ElementCollection elementCollection = (ElementCollection)a.getAnnotation(ElementCollection.class); if ((elementCollection != null) && (elementCollection.fetch() != FetchType.EAGER)) { lazy = true; } ManyToMany manyToMany = (ManyToMany)a.getAnnotation(ManyToMany.class); if ((manyToMany != null) && (manyToMany.fetch() != FetchType.EAGER)) { lazy = true; } OneToMany oneToMany = (OneToMany)a.getAnnotation(OneToMany.class); if ((oneToMany != null) && (oneToMany.fetch() != FetchType.EAGER)) { lazy = true; } ManyToOne manyToOne = (ManyToOne)a.getAnnotation(ManyToOne.class); if ((manyToOne != null) && (manyToOne.fetch() == FetchType.LAZY)) { lazy = true; } OneToOne oneToOne = (OneToOne)a.getAnnotation(OneToOne.class); if ((oneToOne != null) && (oneToOne.fetch() == FetchType.LAZY)) { lazy = true; } return lazy; } } JsonLazy.java?package com.rf.dtd.systemsupport.reportmodel.Util; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; @Target({java.lang.annotation.ElementType.METHOD,java.lang.annotation.ElementType.FIELD}) @Retention(RetentionPolicy.RUNTIME) public @interface JsonLazy { public abstract boolean value(); } JsonUtil.java?~?9KB???? ????package com.rf.dtd.systemsupport.reportmodel.Util; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.IOException; import java.io.Writer; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Iterator; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import org.codehaus.jackson.JsonNode; import org.codehaus.jackson.JsonParser; import org.codehaus.jackson.map.DeserializationConfig; import org.codehaus.jackson.map.ObjectMapper; import org.codehaus.jackson.map.SerializationConfig; import org.codehaus.jackson.node.TextNode; import org.codehaus.jackson.type.TypeReference; public abstract class JsonUtil { public static void main(String[] args) { Object ss = parseJson("{"datasourceId":12201,"dsName":"bj","jndiName":"","driverClass":"oracle.jdbc.OracleDriver","jdbcURL":"jdbc:oracle:thin:@10.88.107.250:1521:orcl","userName":"devtest","password":"devtest"}"); String josnString = "{ "excelName" : "组织结构模板.xls","sheet" : [ { "entryCode" : "epdm_pcOrganizationT","columns" : [ { "field" : "orgName","title" : "机构名称" },{ "field" : "orgCode","title" : "机构代码" },{ "field" : "canton","title" : "行政区名称" },{ "field" : "cantonCode","title" : "行政区代码" },{ "field" : "mailingAddress","title" : "邮递地址" },{ "field" : "orgId","title" : "ORG_ID" },{ "field" : "orgLevel","title" : "级别" },{ "field" : "parentId","title" : "上级机构名称" } ],"sheetName" : "Sheet1","rows" : [ { "" : "","orgId" : "444.0","parentId" : "雍和宫","cantonCode" : "7777.0","orgCode" : "9999.0","canton" : "石景山","orgName" : "八角","mailingAddress" : "102300.0","orgLevel" : "中级" },{ "" : "","orgCode" : "10000.0","orgCode" : "10001.0","orgCode" : "10002.0","orgLevel" : "中级" } ] },{ "entryCode" : "epdm_pcOrganizationT","sheetName" : "Sheet2","orgCode" : "888.0","orgCode" : "889.0","orgCode" : "890.0","orgCode" : "891.0","orgLevel" : "中级" } ] } ] }"; Object sssw = parseJson(josnString); System.out.println(sssw); System.out.println(ss); } public static String getJSONString(String filePath) throws Exception{ StringBuffer data = new StringBuffer(); BufferedReader reader = null; reader = new BufferedReader(new FileReader(new File(filePath))); String temp = null; while((temp = reader.readLine()) != null){ data.append(temp); } if (reader != null){ reader.close(); } return data.toString(); } public static ObjectMapper getObjectMapper() { ObjectMapper om = new ObjectMapper().setAnnotationIntrospector(new JpaLazyIntrospector()); om.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")); om.configure(SerializationConfig.Feature.INDENT_OUTPUT,true); om.configure(SerializationConfig.Feature.FAIL_ON_EMPTY_BEANS,false); om.configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES,false); om.configure(DeserializationConfig.Feature.FAIL_ON_NULL_FOR_PRIMITIVES,false); om.configure(DeserializationConfig.Feature.FAIL_ON_NUMBERS_FOR_ENUMS,false); om.configure(DeserializationConfig.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY,true); om.configure(DeserializationConfig.Feature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT,true); om.configure(JsonParser.Feature.ALLOW_UNQUOTED_FIELD_NAMES,true); return om; } public static String toJsonString(Object object) { try { return getObjectMapper().writeValueAsString(object); } catch (IOException ex) { throw new RuntimeException(ex); } } public static void writeJsonString(Object object,Writer writer) { try { getObjectMapper().writeValue(writer,object); } catch (IOException ex) { throw new RuntimeException(ex); } } public static Map<?,?> parseJson(String jsonString) { JsonNode jn = null; try { jn = getObjectMapper().readTree(jsonString); } catch (IOException ex) { ex.printStackTrace(); } return (Map<?,?>)JsonNodeToMap(jn); } public static Object parseJson2MapOrList(String jsonString) { JsonNode jn = null; try { jn = getObjectMapper().readTree(jsonString); } catch (IOException ex) { ex.printStackTrace(); } return JsonNodeToMap(jn); } public static <T> T parseJson(String jsonString,Class<T> classType) { try { return getObjectMapper().readValue(jsonString,classType); } catch (Exception ex) { ex.printStackTrace(); }return null; } public static <T> T parseJson(String jsonString,TypeReference<T> typeReference) { try { return getObjectMapper().readValue(jsonString,typeReference); } catch (Exception ex) { ex.printStackTrace(); }return null; } public static <T> T parseJsonT(String jsonString) { try { return getObjectMapper().readValue(jsonString,new TypeReference<Object>() { } ); } catch (Exception ex) { ex.printStackTrace(); }return null; } public static <T> Map<?,?> bean2Map(Object bean) { try { return (Map<?,?>)getObjectMapper().convertValue(bean,Map.class); } catch (Exception ex) { ex.printStackTrace(); }return null; } public static <T> T map2Bean(Map<?,?> map,Class<T> clazz) { try { return getObjectMapper().convertValue(map,clazz); } catch (Exception ex) { ex.printStackTrace(); }return null; } public static Object JsonNodeToMap(JsonNode root) { Map<String,Object> map = new LinkedHashMap<String,Object>(); if (root == null) { return map; } if (root.isArray()) { List<Object> list = new ArrayList<Object>(); for (JsonNode node : root) { Object nmp = JsonNodeToMap(node); list.add(nmp); } return list; }if (root.isTextual()) { try { return ((TextNode)root).asText(); } catch (Exception e) { return root.toString(); } } Iterator<?> iter = root.getFields(); while (iter.hasNext()) { @SuppressWarnings("rawtypes") Map.Entry entry = (Map.Entry)iter.next(); String key = (String)entry.getKey(); JsonNode ele = (JsonNode)entry.getValue(); if (ele.isObject()) map.put(key,JsonNodeToMap(ele)); else if (ele.isTextual()) map.put(key,((TextNode)ele).asText()); else if (ele.isArray()) map.put(key,JsonNodeToMap(ele)); else { map.put(key,ele.toString()); } } return map; } } 以上内容由PHP站长网【52php.cn】收集整理供大家参考研究 如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |