jackson实现Java对象与json的互转

2 篇文章 0 订阅

Java对象与json的互转,有多种转换库,如json-lib,jackson等,相比json-lib框架,Jackson所依赖的jar包较少,本文对Jackson库的转换方式做简单介绍。
使用jackson时,所需要的jar包如下:

jackson-core-2.3.4.jar

jackson-annotations-2.3.4.jar

jackson-databind-2.3.4.jar

jackson中的核心类是ObjectMapper,类型的互转皆由此类完成。

测试代码如下:

/*
 *	Title:TestJson.java<br>
 *  Date: 2017年1月3日 下午3:42:31<br>
 * 
 */
package com.testJsonWithJackson;

import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;

/**
 * <br>
 * 
 * @version 1.0
 */
public class JsonUtil
{
	private ObjectMapper mapper = new ObjectMapper();
	/**
	 * json转为entity
	 * @param param_json
	 * @param o
	 * @return
	 */
	public <T> T paserJsonToEntity(String param_json, Class<T> o)
	{
		T instance = null;
		if (param_json != null && !"".equals(param_json))
		{
			try
			{
				instance = mapper.readValue(param_json, o);
			}
			catch (Exception e)
			{
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		return instance;

	}
	/**
	 * json转为list
	 * @param param_json
	 * @param o
	 * @return
	 */
	public <T> List<T> paserJsonToArray(String param_json, Class<T[]> o)
	{
		List<T> paramList = new ArrayList<T>();
		if (param_json != null && !"".equals(param_json))
		{
			try
			{
				T[] ins = (T[]) mapper.readValue(param_json, o);
				paramList = Arrays.asList(ins);
			}
			catch (Exception e)
			{
				e.printStackTrace();
			}
		}
		return paramList;
	}

	/**
	 * json转为map
	 * @param param_json
	 * @return
	 */
	@SuppressWarnings("unchecked")
	public Map<String, Object> paserJsonToMap(String param_json)
	{
		Map<String, Object> paramMap = new HashMap<String, Object>();

		if (param_json != null && !"".equals(param_json))
		{
			try
			{
				paramMap = mapper.readValue(param_json, Map.class);
			}
			catch (IOException e)
			{
				e.printStackTrace();
			}
		}
		return paramMap;

	}
	/**
	 * java 对象转json
	 * ObjectMapper有多个JSON序列化的方法,可以把JSON字符串保存File、OutputStream、字节数组等不同的介质中。 
    	 * writeValue(File arg0, Object arg1)把arg1转成json序列,并保存到arg0文件中。 
    	 * writeValue(OutputStream arg0, Object arg1)把arg1转成json序列,并保存到arg0输出流中。 
     	 * writeValueAsBytes(Object arg0)把arg0转成json序列,并把结果输出成字节数组。 
    	 * writeValueAsString(Object arg0)把arg0转成json序列,并把结果输出成字符串。 
	 * @param obj
	 * @return
	 * @throws JsonProcessingException
	 */
	public String parseObjectToJsonString(Object obj) throws JsonProcessingException{
		return mapper.writeValueAsString(obj);
	}
	
	public static void main(String[] args) throws JsonProcessingException
	{
		JsonUtil jsonUtil=new JsonUtil();
		System.out.println("-----list转换-----");
		List<String> list=new ArrayList<>();
		list.add("a");
		list.add("b");
		String listStr=jsonUtil.parseObjectToJsonString(list);
		System.out.println(listStr);
		List<String> resultList=jsonUtil.paserJsonToArray(listStr, String[].class);
		System.out.println(resultList.get(0));
		System.out.println("-----list转换-----\n");
		
		System.out.println("-----map转换-----");
		Map<String,String> map=new HashMap<String,String>();
		map.put("name", "sherry");
		map.put("gender", "female");
		String mapStr=jsonUtil.parseObjectToJsonString(map);
		System.out.println(mapStr);
		Map<String, Object> resultMap=jsonUtil.paserJsonToMap(mapStr);
		System.out.println(resultMap.get("name"));
		System.out.println("-----map转换-----\n");
	}
	
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值