文档章节

jackson工具类json转list、json转map、json转bean、bean转json

V
 ValSong
发布于 2017/09/06 22:31
字数 297
阅读 84
收藏 1
点赞 0
评论 0
package cn.com.valsong.framework.util;

import java.io.IOException;
import java.util.List;
import java.util.Map;

import com.fasterxml.jackson.core.JsonParseException;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.JavaType;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.ObjectMapper;

/**
 * Json工具类,基于Jackson实现
 * 
 * @author Val Song
 * @date Sep 4, 2017
 *
 */
public class JacksonUtils {

	/**
	 * 将对象转化成json
	 * 
	 * @param t
	 * @return
	 * @throws JsonProcessingException
	 */
	public static <T> String toJson(T t) throws JsonProcessingException {
		return OBJECT_MAPPER.get().writeValueAsString(t);
	}

	/**
	 * 将json转化成bean
	 * 
	 * @param json
	 * @param valueType
	 * @return
	 * @throws JsonParseException
	 * @throws JsonMappingException
	 * @throws IOException
	 */
	public static <T> T toEntity(String json, Class<T> valueType) throws IOException {
		return OBJECT_MAPPER.get().readValue(json, valueType);
	}

	/**
	 * 将json转化成List
	 * 
	 * @param json
	 * @param collectionClass
	 * @param elementClass
	 * @return
	 * @throws JsonParseException
	 * @throws JsonMappingException
	 * @throws IOException
	 */
	@SuppressWarnings("rawtypes")
	public static <T> List<T> toList(String json, Class<? extends List> collectionClass, Class<T> elementClass)
			throws IOException {
		JavaType javaType = OBJECT_MAPPER.get().getTypeFactory().constructCollectionType(collectionClass, elementClass);
		return OBJECT_MAPPER.get().readValue(json, javaType);
	}

	/**
	 * 将json转化成Map
	 * 
	 * @param json
	 * @param mapClass
	 * @param keyClass
	 * @param valueClass
	 * @return
	 * @throws JsonParseException
	 * @throws JsonMappingException
	 * @throws IOException
	 */
	@SuppressWarnings("rawtypes")
	public static <K, V> Map<K, V> toMap(String json, Class<? extends Map> mapClass, Class<K> keyClass,
			Class<V> valueClass) throws IOException {
		JavaType javaType = OBJECT_MAPPER.get().getTypeFactory().constructMapType(mapClass, keyClass, valueClass);
		return OBJECT_MAPPER.get().readValue(json, javaType);
	}

	// ################################################################################################################

	/**
	 * 禁止调用无参构造
	 * 
	 * @throws IllegalAccessException
	 */
	private JacksonUtils() throws AssertionError {
		throw new AssertionError("Can't create an instance!");
	}

	/**
	 * 使用ThreadLocal创建对象,防止出现线程安全问题
	 */
	private static final ThreadLocal<ObjectMapper> OBJECT_MAPPER = new ThreadLocal<ObjectMapper>() {
		@Override
		protected ObjectMapper initialValue() {
			ObjectMapper objectMapper = new ObjectMapper();
			objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); // 忽略不存在的字段
			return objectMapper;
		}
	};

}

© 著作权归作者所有

共有 人打赏支持
V
粉丝 0
博文 11
码字总数 6686
作品 0
黄浦
程序员
[Json框架选型]Android开发中应该使用哪一种主流json框架?

前言 前段时间@寒江不钓同学针对国内Top500和Google Play Top200 Android应用做了全面的分析(具体分析报告见文末的参考资料),其中有涉及到对主流应用使用json框架Gson、FastJson、Jackson...

张明云
2016/08/08
0
0
json处理,json、object的相互转化

用 FastJson将Json转换Bean ,用Jackson或Gson将Bean 转FastJson 要求能够支持获取Object中的Object,即支持深层嵌套的Object解析,此外json、Object间的相互转换要快速。 参考:各个JSON技术...

刘阳0292
2017/07/09
0
0
springmvc-json小案例

controller类----------------------------- @Controller @RequestMapping(value="/emp") public class EmpAction { /* * 返回json数据 * 1.导入jar包:jackson-core-asl.jar jackson-mapper......

李永china
2016/05/18
78
0
有效选择七个关于 Java 的 JSON 开源类库

有效选择七个关于Java的JSON开源类库 April 4, 2014 By Constantin Marian Alin 翻译:无若 (英语原文:http://www.developer.com/lang/jscript/top-7-open-source-json-binding-providers-......

无若
2014/04/19
12.1K
14
有效选择七个关于Java的JSON开源类库

April 4, 2014 By Constantin Marian Alin 翻译:无若 (英语原文:http://www.developer.com/lang/jscript/top-7-open-source-json-binding-providers-available-today.html) 简介 JSON是J......

无若
2014/04/19
0
1
Google Gson的使用方法及JSON 技术对比

一 、各个JSON技术的简介和优劣 1.json-lib json-lib最开始的也是应用最广泛的json解析工具,json-lib 不好的地方确实是依赖于很多第三方包, 包括commons-beanutils.jar,commons-collectio...

hapier
2016/11/14
130
0
Jackson转换Json

jackson-annotations-2.6.0.jar jackson-core-2.6.3.jar jackson-databind-2.6.3.jar 注意 Jackson解析嵌套类时,内部类必须声明为static public class Outer {static class Inner {public i......

CrazyManDF
2016/04/03
481
0
Spring MVC RestFul 无法将Map输出为XML格式

在学习Spring Rest 时,发现可以传输各种格式的文件给客户端,但是都是JavaBean对象与Json XML 的转换,现在我想的是,能不能是 Map对象与XML的转换呢?具体应该如何操作呢?我目前的配置文件...

learn_more
2014/10/14
957
0
【Java】各个JSON技术的比较

一 、各个JSON技术的简介和优劣 1. json-lib json-lib最开始的也是应用最广泛的json解析工具,json-lib 不好的地方确实是依赖于很多第三方包,包括commons-beanutils.jar,commons-collectio...

鴿神丶
2016/07/22
25
0
Hutool 2.15.8 发布,Java 工具集

Hutool 2.15.8 发布了。Hutool 是一个Java工具包,提供了丰富的文件、日期、日志、正则、字符串、配置文件等工具方法,并封装了一套简单易用的ORM框架。 更新内容: 1、修复Http编码问题 2、...

路小磊
2016/09/07
2.1K
10

没有更多内容

加载失败,请刷新页面

加载更多

下一页

17.TCP:传输控制协议

介绍 TCP和UDP使用同一网络层(IP),但TCP提供了面向连接、可靠的传输层服务 TCP传输给IP层的信息单位称为报文段或段 TCP通过如下方式保证可靠性: 应用数据被分割成TCP认为最合适发送的数据...

loda0128
5分钟前
0
0
重装Oracle时出现environment variable "PATH"错误的解决办法

在win7 64位下重新安装oracle 11g,一直报environment variable "PATH"的错误,按说明将path里多余的路径删除,但没办法解决。选择忽略错误继续安装,装一半会报CRC错误,还是安装失败。最好...

良言
11分钟前
0
0
TensorFlow 全连接的mnist

全连接的mnist import tensorflow as tf# 导入 MINST 数据集from tensorflow.examples.tutorials.mnist import input_datamnist = input_data.read_data_sets("MNIST_data/", one_ho......

阿豪boy
11分钟前
0
0
JAVA 三种WebService 规范

JAVA 中共有三种WebService 规范,分别是JAX-WS(JAX-RPC)、JAXM&SAAJ、JAX-RS。 1. Jaxws(掌握) JAX-WS 的全称为 Java API for XML-Based Webservices ,早期的基于SOAP 的JAVA 的Web 服务...

onedotdot
30分钟前
0
0
将博客搬至CSDN

将博客搬至CSDN

xpbob
31分钟前
1
0
Aidl进程间通信详细介绍

目录介绍 1.问题答疑 2.Aidl相关属性介绍 2.1 AIDL所支持的数据类型 2.2 服务端和客户端 2.3 AIDL的基本概念 3.实际开发中案例操作 3.1 aidl通信业务需求 3.2 操作步骤伪代码 3.3 服务端操作...

潇湘剑雨
49分钟前
0
0
python爬虫日志(3)下载图片

import urlliburl='https://xxx.jpg'#图片地址res=urllib.request.urlopen(url)#此函数用于对url的访问data=res.read() #字节流with open(r'D:\1.jpg',"wb") as code: c...

茫羽行
今天
0
0
vue中$emit的用法

1、父组件可以使用 props 把数据传给子组件。 2、子组件可以使用 $emit 触发父组件的自定义事件。 vm.$emit( event, arg ) //触发当前实例上的事件 vm.$on( event, fn );//监听event事件后运...

JamesView
今天
0
0
bash审计系统搭建

step1:使用saltstack工具bash部署>>>>>> # salt -N clienta state.sls audit step2:安装elasticsearch>>>>>> 注意: 1.不能以root用户进行启动,需要创建用户,并对解压的elasticsearch目录赋......

硅谷课堂
今天
0
0
Linux sar性能分析

Linux使用sar进行性能分析 sar简介 sar命令常用格式 sar常用性能数据分析 整体CPU使用统计-u 各个CPU使用统计-P 内存使用情况统计-r 整体IO情况-b 各个IO设备情况-d 网络统计-n sar日志保存-...

易野
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部