json-lib JsonUtils 工具类,json-lib 工具类
================================
©Copyright 蕃薯耀 2018年6月26日
http://fanshuyao.iteye.com/
import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Collection; import java.util.Date; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.regex.Matcher; import java.util.regex.Pattern; import net.sf.ezmorph.Morpher; import net.sf.ezmorph.MorpherRegistry; import net.sf.ezmorph.bean.BeanMorpher; import net.sf.ezmorph.object.DateMorpher; import net.sf.json.JSONArray; import net.sf.json.JSONObject; import net.sf.json.JsonConfig; import net.sf.json.processors.JsonValueProcessor; import net.sf.json.util.JSONUtils; public class JsonUtils { @SuppressWarnings("unchecked") public static <T> T toClass(String json, Class<T> clazz){ return (T) JSONObject.toBean(JSONObject.fromObject(json), clazz); } public JsonUtils() { } public static String toJson(Object obj) { String s = "{}"; if (obj == null) { return s; } if (!(obj instanceof Collection) && !(obj.getClass().isArray()) && !(obj instanceof JSONArray)) { s = JSONObject.fromObject(obj, config).toString(); } else { s = JSONArray.fromObject(obj, config).toString(); } return s; } /** * json转换成Bean,clazz指定的整个json转换的类型 * 如果这个bean里面还有其他自定义类型(List,Array不包括,会自动转换)不知道如何转换只能用MorphDynaBean * 解决办法请看jsonToBean(String s, Class clazz, Map map)中的map来指定类型 * jsonToBean只适合JsonObject,isArray为true不满足,json形式最外层为{}而不能为[] */ public static Object jsonToBean(String s, Class<?> clazz) { return jsonToBean(s, clazz, null); } public static Object jsonToBean(String s, Class<?> clazz, Map<String,?> typemap) { return trans2Bean(JSONObject.fromObject(s), clazz, typemap); } private static Object trans2Bean(JSONObject jsonobject, Class<?> class1, Map<String,?> map) { return JSONObject.toBean(jsonobject, class1, map); } /** * 将MorphDynaBean类型的对象转换成指定的类型对象 */ public static Object translateMorphDynaBean(Class<?> outclazz, Object obj) { MorpherRegistry morpherRegistry = JSONUtils.getMorpherRegistry(); Morpher dynaMorpher = new BeanMorpher(outclazz,morpherRegistry); morpherRegistry.registerMorpher(dynaMorpher); return morpherRegistry.morph(outclazz,obj); } @SuppressWarnings("rawtypes") public static List jsonArrayToList(String json) { return JSONArray.fromObject(json); } /** * 将最外层为[]的json转换成List对象 * jsonToBean只适合json最外层为{}形式 * 可以指定class,里面元素形式为{} 将元素转换成指定类型 [{},{}] * 但是要求里面元素必须是{}包含,如果如[[],[]]json形式不适合JsonObject */ @SuppressWarnings({ "rawtypes", "unchecked" }) public static List jsonArrayToList(String json, Class clazz) { if (json == null || "".equals(json)) { return null; } if (clazz == null) { return JSONArray.fromObject(json); } List arraylist = new ArrayList(); for (Iterator iterator = JSONArray.fromObject(json).iterator(); iterator.hasNext(); ) { arraylist.add(trans2Bean(((JSONObject) iterator.next()), clazz, null)); }; return arraylist; } @SuppressWarnings({ "unchecked", "rawtypes" }) public static List jsonArrayToList(String json,Class clazz, Map mapType) { if (json == null || "".equals(json)) { return null; } if (clazz == null) { return JSONArray.fromObject(json); } List arraylist = new ArrayList(); for (Iterator iterator = JSONArray.fromObject(json).iterator(); iterator.hasNext(); ) { arraylist.add(trans2Bean(((JSONObject) iterator.next()), clazz, mapType)); }; return arraylist; } /** * jsonToMap可以用jsonToBean来代替 * @param s * @return */ @SuppressWarnings("rawtypes") public static Map jsonToMap(String json) { return JSONObject.fromObject(json); } @SuppressWarnings({ "unchecked", "rawtypes" }) public static Map jsonToMap(String json, Class class1) { if(json == null || "".equals(json)) { return null; } JSONObject jsonobject = JSONObject.fromObject(json); HashMap hashmap = new HashMap(); String s1 = null; for (Iterator iterator = jsonobject.keys(); iterator.hasNext(); ) { s1 = (String) iterator.next(); hashmap.put(s1,trans2Bean(jsonobject.getJSONObject(s1), class1, null)); } return hashmap; } @SuppressWarnings({ "unchecked", "rawtypes" }) public static Map jsonToMap(String json, Class class1, Map map) { if(json == null || "".equals(json)) { return null; } JSONObject jsonobject = JSONObject.fromObject(json); HashMap hashmap = new HashMap(); String s1; for (Iterator iterator = jsonobject.keys(); iterator.hasNext(); ) { s1 = (String) iterator.next(); hashmap.put(s1,trans2Bean(jsonobject.getJSONObject(s1), class1, map)); } return hashmap; } public static String escape(String s) { Pattern pattern = Pattern.compile("[\\\\|'|\\r|\\n]"); Matcher matcher = pattern.matcher(s); StringBuffer stringbuffer = new StringBuffer(); while (matcher.find()) if ("\\".equals(matcher.group())) matcher.appendReplacement(stringbuffer, "\\\\\\\\"); else if ("'".equals(matcher.group())) matcher.appendReplacement(stringbuffer, "\\\\'"); else if ("\r".equals(matcher.group())) matcher.appendReplacement(stringbuffer, "\\\\r"); else if ("\n".equals(matcher.group())) matcher.appendReplacement(stringbuffer, "\\\\n"); matcher.appendTail(stringbuffer); return stringbuffer.toString(); } private static final JsonConfig config; static { config = new JsonConfig(); //使用jsonConfig的setCycleDetectionStrategy()方法进行忽略死循环。 //bK.setCycleDetectionStrategy(CycleDetectionStrategy.LENIENT); //需要注意的是完整的放到最前面,如果简单的放到前面,匹配范围变大了如:yyyy-MM-dd 匹配2012-05-21 13:13:11 JSONUtils.getMorpherRegistry() .registerMorpher(new DateMorpher(new String[] {"yyyy-MM-dd HH:mm:ss","yyyy-MM-dd"})); //时间如java.sql.Date的处理 config.registerJsonValueProcessor(java.sql.Date.class, new DateJsonValueProcessor("yyyy-MM-dd")); //时间为java.util.Date处理 config.registerJsonValueProcessor(java.util.Date.class, new DateJsonValueProcessor("yyyy-MM-dd HH:mm:ss")); //时间为java.sql.Timestamp处理 config.registerJsonValueProcessor(java.sql.Timestamp.class, new DateJsonValueProcessor("yyyy-MM-dd HH:mm:ss")); //时间为java.math.BigDecimal处理 config.registerJsonValueProcessor(java.math.BigDecimal.class, new NumberJsonValueProcessor()); } // 时间转换内部类 public static class DateJsonValueProcessor implements JsonValueProcessor { private static final String defaultFormat = "yyyy-MM-dd"; private DateFormat dataFormat; // 构造函数 public DateJsonValueProcessor() { dataFormat = new SimpleDateFormat(defaultFormat); } public DateJsonValueProcessor(String s) { dataFormat = new SimpleDateFormat(s); } //如果是List<Date>类型,这里面obj值得是集合一个元素Date public Object processArrayValue(Object obj, JsonConfig jsonconfig) { return process(obj); } @Override public Object processObjectValue(String s, Object obj, JsonConfig jsonconfig) { return process(obj); } //如果是java.sql.Date类型,这里强转是否会存在问题 //这里因为Date是java.util.Date类型,java.sql.Date是java.util.Date的子类 //自动向上转型可以知道,这里强转是合理的 private Object process(Object obj) { return obj != null ? dataFormat.format((Date)obj) : ""; } } //BigDecimal转换为Json发生截断 处理 public static class NumberJsonValueProcessor implements JsonValueProcessor { @Override public Object processArrayValue(Object obj, JsonConfig jsonconfig) { return process(obj); } @Override public Object processObjectValue(String s, Object obj, JsonConfig jsonconfig) { return process(obj); } private Object process(Object obj) { return obj != null ? obj.toString() : ""; } } }
(如果你觉得文章对你有帮助,欢迎捐赠,^_^,谢谢!)
================================
©Copyright 蕃薯耀 2018年6月26日
http://fanshuyao.iteye.com/
相关推荐
json-utils Json工具类,包含Gson,FastJson,Jackson三个库的工具类,其中Jackson支持Scala版本Maven依赖: < dependencies>< dependency> < groupId>...gson</ artifactId> < version>1.1.0</ version>
json数据处理类 将List对象序列化为JSON文本 将对象序列化为JSON文本 将JSON对象数组序列化为JSON文本 将对象转换为List对象 将对象转换为Collection对象 将对象转换为JSON对象数组 将对象转换为JSON对象 将对象...
json2bean json2xml json2list json2map
当然了,现在对于“将查询数据库得到的结果集resultRest转换为JsonArray”已经有很多json的库来解决了,譬如json-lib、gson、jackson、fastjson等等,本文介绍的正是json-lib这种比较纯洁的库来处理resultSet,晚点...
JsonUtils(Json转换工具类)
JSONUtils工具类
很好用的JSON转换工具类 1、将对象转换成json字符串 2、将json结果集转化为对象 3、将json数据转换成pojo对象list
【IT专家】在JAVA中封装JSONUtils工具类及使用 (转).docx【IT专家】在JAVA中封装JSONUtils工具类及使用 (转).docx
Class类工具 \Cookie工具类 \excel读取 工具类\Java如何生成验证码图片和点击刷新验证码\java获取当前月第一天和最后一天,上个月第一天和最后一天\java实现ftp文件的上传与下载\Json工具类 - JsonUtils.java\JS...
JsonUtils 使用JsonUtils工具类可以实现java对象和jason之间的相互转换, 提供了三个方法objectYoJson, jsonToPojo, jsonToList
fastjson gson jackjson json-lib org.json的使用例子 package ivyy.taobao.com.utils; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.JsonElement; import ...
EhCacheUtils - 基于ehcache的工具类 LruCacheUtils - 基于LinkedHashMap实现LRU缓存的工具类 MemcachedUtils - 基于memcached的工具类 RedisUtils - 基于redis的工具类,与redis的集群配置无缝结合 db JdbcUtils ...
Gson工具类JsonUtils 将java对象装换为json,支持泛型和任意类型
java json包:commons-beanutils-1.8.0.jar、commons-collections-3.2.1.jar、commons-lang-2.5.jar、commons-logging-1.1.1.jar、ezmorph-1.0.6.jar、json-lib-2.4-jdk15.jar
主要介绍了关于Jackson的JSON工具类封装 JsonUtils用法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
json-lib包是一个构造和解析json的类库,提供将Java对象:beans, maps, collections, java arrays and XML等等转换成JSON数据,或者反向转换的功能。下载地址:
通过JSON Extractor 插件来提取Jmeter请求的JSON响应结果,JSONPathExtractor 版本:2.7。
D:\002 我的工具类\014 json\JsonUtils.java D:\002 我的工具类\015 cookie D:\002 我的工具类\015 cookie\CookieUtils.java D:\002 我的工具类\016 FtpUtil D:\002 我的工具类\016 FtpUtil\FtpUtil.java D:\002 我...