一. 引入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>20160810</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(0, 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.jsoJSONArray array = JSONArray.fromObject(jsonString);Object[] obj = new Object[array.size()];for (int i = 0; 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;}}

转载于:https://www.cnblogs.com/rinack/p/7873191.html

JACKSON JSON 操作帮助类相关推荐

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

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

  2. 一文吃透Json解析工具类合集(FastJson、Jackson、Gson)

    Json解析工具类 前言 一.各个JSON技术的简介 1.1 FastJson角色 1.2 Jackson角色 1.3 Gson角色 二.使用步骤 2.1 引入库 1.FastJson依赖 2.Jac ...

  3. java 动态解析_Java 如何解析key为动态的json操作

    遇到了这样的json串: "panel": { "8": { "112": 1 }, "11": { "147 ...

  4. 【Android 逆向】Android 逆向通用工具开发 ( 静态库项目中的网络操作核心类 CNetwork 分析 )

    文章目录 一.adabingo 静态库项目中的网络操作核心类 CNetwork 分析 一.adabingo 静态库项目中的网络操作核心类 CNetwork 分析 CNetwork 相关方法分析 : 等 ...

  5. Java - Jackson JSON Java Parser API

    文章目录 概述 依赖 Jackson JSON示例 基础数据 JSON转换为Java对象 Jackson JSON –将JSON转换为Map 概述 Jackson JSON Java Parser非常 ...

  6. Android Json操作

    1>JSON的定义:        一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性.业内主流技术为其提供了完整的解决方案(有点类似于正则表达式 ,获得了当今大部分语言的支持),从而 ...

  7. 让Jackson JSON生成的数据包含的中文以unicode方式编码

    本文出处:http://blog.csdn.net/chaijunkun/article/details/8257209,转载请注明.由于本人不定期会整理相关博文,会对相应内容作出完善.因此强烈建议在 ...

  8. java jackson unicode_如何让Jackson JSON生成的数据包含的中文以unicode方式编码

    我们都知道,Jackson JSON以高速.方便和灵活著称.之前的文章中介绍过使用注解的形式来规定如何将一个对象序列化成JSON的方法,以及如何将一个JSON数据反序列化到一个对象上.但是美中不足的一 ...

  9. java代码里的JSON格式怎么写好看_python3 循环读取excel文件并写入json操作

    文件内容: excel内容: 代码: import xlrdimport jsonimport operatordef read_xlsx(filename): # 打开excel文件 data1 = ...

  10. js json操作,qk-json

    js对json数据进行操作 不止增删改查,有一点点类似于数据库,也是朝着这个方向发展 如有问题,可以在评论区提出,或者去gitee上说明 最后麻烦如果可以,请点击star和fork qk-json 作 ...

最新文章

  1. 资源 | 一文掌握机器学习所有值得看的视频、课程、工具
  2. 查询到330TSI 精英版变速箱是DSG七速湿式(DQ380)(国五)DSG七速湿式(DQ381)(国六)...
  3. 1分钟解决VS每次运行都显示“正在还原nuget程序包”问题
  4. android发送短信
  5. java 获取包名类名_获取指定包名下的所有类的类名(全名)
  6. lunbuntu install mysql5.7
  7. SQL SERVER 执行计划各字段注释
  8. Linux 命令之 apt-get -- APT 软件包管理工具
  9. Windows 10 开启有线无线802.1x脚本
  10. c语言会生成class文件,一文带你刨析class文件
  11. Java常用知识整理
  12. 卡巴斯基提供升级包 解决病毒库升级
  13. mkv文件怎样转成mp4
  14. H5移动端rem转成rpx
  15. 安卓逆向013之DDMS去广告(车来了)
  16. SharePoint随笔
  17. html5 涂鸦板
  18. 【Android 】零基础到飞升 | AbsoluteLayout(绝对布局)
  19. 2018年度热度超高的小程序排行榜,你有用过这些吗!
  20. 自动驾驶的大脑——芯片简介

热门文章

  1. 领域搜索算法java_多起点的局部搜索算法(multi-start local search)解决TSP问题(附Java代码及注释)...
  2. 华为云该网站服务器错了,云服务器选错镜像版本
  3. try catch与异常的说明
  4. JVM学习04-垃圾回收概念与算法
  5. 上传文件实时显示网速怎么实现_“双11”来了!三亚1487个5G基站带你拼网速_政务_澎湃新闻...
  6. 【渝粤教育】电大中专电商运营实操 (16)作业 题库
  7. TCP/IP,三次握手四次挥手,TCP/UDP , HTTP/HTTPS
  8. ios网络相关问题-HTTP特点
  9. javasript深度拷贝
  10. linux下的screen工具配置(针对 string escape)