一. 引入POM

    <dependency>
<groupId>net.sf.json-lib</groupId>
<artifactId>json-lib</artifactId>
<version>2.4</version>
<classifier>jdk15</classifier>
</dependency> <dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version></version>
</dependency>

二.代码

import java.io.File;
import java.io.IOException;
import java.nio.charset.Charset;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.JavaType;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.type.TypeFactory; import net.sf.json.JSONArray;
import net.sf.json.JSONObject; public class JacksonUtil { private static final Logger log = LoggerFactory.getLogger(JacksonUtil.class); public static final ObjectMapper mapper = new ObjectMapper(); private JacksonUtil() {
throw new IllegalStateException("Utility class");
} /**
* 将对象序列化成JSON字符串
*
* @param obj
* @return
*/
public static String serializeObjectToJson(Object obj) {
try {
return mapper.writeValueAsString(obj);
} catch (Exception e) {
log.error("serialize object to json", e);
return null;
}
} /**
* 将对象序列化到文件
*
* @param obj
* 要序列化的对象
* @param file
* 要写入的文件
*/
public static void serializeObjectToFile(Object obj, File file) {
try {
ObjectMapper mapper = new ObjectMapper();
mapper.writeValue(file, obj);
} catch (Exception e) {
log.error("Serialize Object To Json", e);
}
} /**
* 从文件读取JSON
*
* @param file
* 来源文件
* @param clazz
* 反序列化成的类
* @return
*/
public static <T> T deserializeFormFile(File file, Class<T> clazz) {
try {
ObjectMapper mapper = new ObjectMapper();
return mapper.readValue(file, clazz);
} catch (Exception e) {
log.error("Deserialize Json Form File", e);
}
return null;
} /**
* 将JSON字符串反序列化成对象
*
* @param json
* 要反序列化JSON字符串
* @param typeReference
* 类型帮助类(带泛型类T为List,Map等泛型类)
* @return
*/
@SuppressWarnings("unchecked")
public static <T> T deserializeJsonToObject(String json, TypeReference<T> typeReference) {
try {
return (T) mapper.readValue(json, typeReference);
} catch (Exception e) {
log.error("Deserialize Json to Object", e);
return null;
}
} /**
* 将JSON字符串反序列化成对象
*
* @param json
* 要反序列化JSON字符串
* @param clazz
* 普通对象类型
* @return
*/
public static <T> T deserializeJsonToObject(String json, Class<T> clazz) {
try {
return mapper.readValue(json, clazz);
} catch (Exception e) {
log.error("Deserialize Json to Object", e);
return null;
}
} /**
* 将JSON字符串反序列化成对象
*
* @param json
* 要反序列化JSON字符串
* @param javaType
* JavaType表示的对象
* @return
*/
public static Object deserializeJsonToObject(String json, JavaType javaType) {
try {
return mapper.readValue(json, javaType);
} catch (Exception e) {
log.error("Deserialize Json to Object", e);
return null;
}
} /**
* 获取List类型的JavaType对象
*
* @param clazz
* List内部对象类型
* @return
*/
public static <T> JavaType getListJavaType(Class<T> clazz) {
TypeFactory typeFactory = mapper.getTypeFactory();
return typeFactory.constructCollectionType(List.class, typeFactory.constructType(clazz));
} /**
* 将JSON字符串反序列化成List
*
* @param json
* JSON字符串
* @param clazz
* List内部类型
* @return
*/
public static <T> List<T> deserializeJsonToList(String json, Class<T> clazz) {
JavaType javaType = getListJavaType(clazz);
try {
return mapper.readValue(json, javaType);
} catch (Exception e) {
log.error("Deserialize Json to List", e);
return Collections.emptyList();
}
} /**
* 获取Map类型的JavaType对象
*
* @param clazzKey
* Map key Type
* @param clazzValue
* Map value Type
* @return Map类型的JavaType对象
*/
public static <K, V> JavaType getMapJavaType(Class<K> clazzKey, Class<V> clazzValue) {
TypeFactory typeFactory = mapper.getTypeFactory();
return typeFactory.constructMapType(Map.class, typeFactory.constructType(clazzKey),
typeFactory.constructType(clazzValue));
} /**
* 将JSON字符串反序列化成Map
*
* @param <K>
* @param <V>
* @param json
* JSON字符串
* @param clazzKey
* Map key Type
* @param clazzValue
* Map value Type
* @return Map<K,V>对象
*/
public static <K, V> Map<K, V> deserializeJsonToMap(String json, Class<K> clazzKey, Class<V> clazzValue) {
JavaType javaType = getMapJavaType(clazzKey, clazzValue);
try {
return mapper.readValue(json, javaType);
} catch (Exception e) {
log.error("Deserialize Json to Map", e);
return null;
}
} /**
* 将JSON字符串反序列化成List<Map>
*
* @param json
* JSON字符串
* @param clazzKey
* key Type
* @param clazzValue
* value Type
* @return
*/
public static <K, V> List<Map<K, V>> deserializeJsonToListMap(String json, Class<K> clazzKey, Class<V> clazzValue) {
JavaType mapType = getMapJavaType(clazzKey, clazzValue);
TypeFactory typeFactory = mapper.getTypeFactory();
JavaType javaType = typeFactory.constructCollectionType(List.class, mapType);
try {
return mapper.readValue(json, javaType);
} catch (Exception e) {
log.error("Deserialize Json to List<Map>", e);
return Collections.emptyList();
}
} /**
* 将 LinkedHashMap 转换为正常 JSON 字符串
*
* @param map
* @param charset
* @return
*/
public static String hashMapToJson(Map<?, ?> map, Charset charset) {
StringBuilder jsonBuilder = new StringBuilder();
jsonBuilder.append("{"); StringBuilder sBuilder = new StringBuilder();
for (Iterator<?> it = map.entrySet().iterator(); it.hasNext();) {
Entry<?, ?> e = (Entry<?, ?>) it.next();
sBuilder.append("\"" + e.getKey() + "\"" + ":");
sBuilder.append("\"" + e.getValue() + "\"" + ",");
} String jsonString = sBuilder.substring(, sBuilder.lastIndexOf(",")); jsonBuilder.append(jsonString);
jsonBuilder.append("}"); byte[] body = jsonBuilder.toString().getBytes(charset);
return new String(body, charset); } /**
*
* @param jsonString
* @param classz
* Object[] obj = getJosnToArray(message, Obj.class);
* @return
*/
public static <T> Object[] getJosnToArray(String jsonString, Class<T> classz) {
// net.sf.jso
JSONArray array = JSONArray.fromObject(jsonString);
Object[] obj = new Object[array.size()];
for (int i = ; i < array.size(); i++) {
JSONObject jsonObject = array.getJSONObject(i);
obj[i] = JSONObject.toBean(jsonObject, classz);
}
return obj;
} /**
*
* @param jsonString
* @return
*/
public static <T> List<T> getJosnToArray(String jsonString) {
ObjectMapper mapper = new ObjectMapper();
List<T> list = null;
try {
list = mapper.readValue(jsonString, new TypeReference<List<T>>() {});
} catch (IOException e) {
log.error("Deserialize Json to List", e);
}
return list;
} }

JACKSON JSON 操作帮助类的更多相关文章

  1. C#工具类:Json操作帮助类(转载)

    原文转载自C#工具类:Json操作帮助类_IT技术小趣屋. Json序列化和反序列化在程序开发中时常会遇到,在C#中可以使用很多种方法实现对数据的Json序列化和反序列化,封装一个Json操作工具类来 ...

  2. 【转载】C#工具类:Json操作帮助类

    Json序列化和反序列化在程序开发中时常会遇到,在C#中可以使用很多种方法实现对数据的Json序列化和反序列化,封装一个Json操作工具类来简化相应的操作,该工具类中包含以下功能:对象转JSON.数据 ...

  3. 公共的Json操作C#类

    using System; using System.Data; using System.Text; using System.Collections.Generic; using System.R ...

  4. 【C#公共帮助类】JsonHelper 操作帮助类, 以后再也不用满地找Json了,拿来直接用

     四个主要操作类:JsonConverter .JsonHelper .JsonSplit .AjaxResult 一.JsonConverter: 自定义查询对象转换动态类.object动态类转换j ...

  5. ASP.NET2.0 Newtonsoft.Json 操作类分享

    JSON 是现在比较流行的数据交互格式,NET3.0+有自带类处理JSON,2.0的话需要借助Newtonsoft.Json来完成,不然自己写的话,很麻烦. 网上搜索下载 Newtonsoft.Jso ...

  6. JWT(JSON Web Tokens)操作帮助类

    载荷实体: /// <summary> /// JWT载荷实体 /// </summary> public sealed class JWTPlayloadInfo { /// ...

  7. Json操作(DynamicJson)

    Json的简介 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于ECMAScript的一个子集. JSON采用完全独立于语言的文本格式,但是也使用了 ...

  8. ASP.NET 里的 JSON操作

    最近项目中需要用到 JSON操作,google了一下 找到了几个比较好的操作方法.... 一 .使用 mircosoft 提供的 .NET Framework 自带的 json操作方法 1. 使用Ja ...

  9. Newtonsoft.Json 操作 JSON 字符串

    Newtonsoft.Json介绍 在做开发的时候,很多数据交换都是以json格式传输的.而使用Json的时候,我们很多时候会涉及到几个序列化对象的使用:DataContractJsonSeriali ...

随机推荐

  1. haitaolab.com 我的新网站,欢迎访问

    从博客园到csdn,再到新浪云博客,最近终于下决心购买空间和域名建立自己的独立网站! 在这里也建议希望建立自己独立博客的朋友尽快行动吧! 我的新的网站“海淘实验室”专注于介绍和分享海淘资讯,欢迎大家访 ...

  2. SQL Alias

    There are two types of aliases that are used most frequently in SQL command: which is column alias a ...

  3. Linux下QTCreator代码自动补全(是真的自动补全,不是手动触发)

    在使用Windows下的QTCreator的时候,像visual studio一样代码自动补全十分方便,而在Linux下,QTCreator似乎不能做到. 网上有些说是可以设置成手动补全,今天试了一下 ...

  4. 怎样更爽地看PDF杂志

    下载了一些PDF的杂志,想着要是全屏双页显示,应该是很爽的,但是,下载了应该foxit reader,还是遇到一些问题: 1.全屏:F11即可 2.全屏后不双页:在选项中,"全屏" ...

  5. 【转】 Python 中,matplotlib绘图无法显示中文的问题

    在python中,默认情况下是无法显示中文的,如下代码: import matplotlib.pyplot as plt # 定义文本框和箭头格式 decisionNode = dict(boxsty ...

  6. Vc++内存布局

    Vc++内存布局 测试平台 Windows server 2012 R2 and visual studio 2013 professional. 本篇文章意在介绍vc++中类的内存布局方式,只是研究 ...

  7. 关于CPU的运行队列与系统负载

    在linux操作系统中,我们一般查看系统的cpu负载情况常用的命令可以是uptime,top,还有vmstat等这些个都是可以有的.每个工具所提供的信息各不相同, 我这里要讨论的仅说cpu部分.使用u ...

  8. (剑指Offer)面试题12:打印1到最大的n位数

    题目: 输入数字n,按顺序打印出从1到最大的n位十进制数. 比如输入3,打印1,2,3一直到最大的3位数即999. 思路: 1.不考虑n的范围,直接打印. void Print1ToMaxOfNDig ...

  9. 推送未找到应用程序的“aps-environment”的权利字符串错误

    一:使用百度推送,或是苹果自带的推送出,才配置好anps-cer文件之后,出现错误 推送未找到应用程序的“aps-environment”的权利字符串错误 二:错误原因: 此原因是配置好推送证书之后, ...

  10. wap、app移动端页面常用html标签汇总

    1.section 将内容组织到精确的语义块,表示页面的一部分. 2.article article表示网页的一个文章.故事. 3.header (1)用在整页的页头 (2)section或者arti ...