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");
}
}