原創:轉載請注明出處
package com.allcam.system.utils;
import com.fasterxml.jackson.databind.ObjectMapper;
public class JSonUtils
{
static ObjectMapper objectMapper;
/**
* 使用泛型方法,把json字符串轉換為相應的JavaBean對象。
* (1)轉換為普通JavaBean:readValue(json,Student.class)
* (2)轉換為List:readValue(json,List.class).但是如果我們想把json轉換為特定類型的List,比如List<Student>,就不能直接進行轉換了。
* 因為readValue(json,List.class)返回的其實是List<Map>類型,你不能指定readValue()的第二個參數是List<Student>.class,所以不能直接轉換。
* 我們可以把readValue()的第二個參數傳遞為Student[].class.然后使用Arrays.asList();方法把得到的數組轉換為特定類型的List。
* (3)轉換為Map:readValue(json,Map.class)
* 我們使用泛型,得到的也是泛型
*
* @param content 要轉換的JavaBean類型
* @param valueType 原始json字符串數據
* @return JavaBean對象
*/
public static <T> T readValue(String content, Class<T> valueType)
{
if (objectMapper == null)
{
objectMapper = new ObjectMapper();
}
try
{
return objectMapper.readValue(content, valueType);
}
catch (Exception e)
{
e.printStackTrace();
}
return null;
}
/**
* 把JavaBean轉換為json字符串
* (1)普通對象轉換:toJson(Student)
* (2)List轉換:toJson(List)
* (3)Map轉換:toJson(Map)
* 我們發現不管什么類型,都可以直接傳入這個方法
*
* @param object JavaBean對象
* @return json字符串
*/
public static String toJSon(Object object)
{
if (objectMapper == null)
{
objectMapper = new ObjectMapper();
}
try
{
return objectMapper.writeValueAsString(object);
}
catch (Exception e)
{
e.printStackTrace();
}
return null;
}
}