🌟废话不多说系列,直接开干! 🌟
📢 JSON 工具类有很多:如 GSON、Fastjson、Jackson 等操作 JSON 字符串有对象之间的转换。本文使用 Spring Boot 默认的Jackson 来演示提供 JSON 工具类。
此工具类的核心功能有:
map对象转成json字符串;- 将
json字符串转换成java对象; list转成json字符串;对象转成json字符串;
一、引入依赖
注意:如果是 Spring Boot 则不需要自动引入此依赖;(下面依赖虽多,单都是以 Jackson 为主)
<!-- UTILS start -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.module</groupId>
<artifactId>jackson-module-jaxb-annotations</artifactId>
<optional>true</optional>
</dependency>
<!-- UTILS end -->
<dependency>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-xml</artifactId>
<version>2.9.8</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.9.8</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.8</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.9.8</version>
</dependency>
二、完整源码
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
/**
* @author Linpeizhan
* @date 7/16/15
*/
public class JsonUtil {
private static ObjectMapper mapper;
/**
* 获取ObjectMapper实例
*
* @param createNew 方式:true,新实例;false,存在的mapper实例
* @return
*/
public static synchronized ObjectMapper getMapperInstance(boolean createNew) {
if (createNew) {
return new ObjectMapper();
} else if (mapper == null) {
mapper = new ObjectMapper();
}
return mapper;
}
/**
* map对象转成json字符串
*
* @param object map对象
* @return map的json字符串
*/
public static String mapToJson(Object object) throws JsonProcessingException {
ObjectMapper mapper = new ObjectMapper();
return mapper.writeValueAsString(object);
}
/**
* list转成json字符串
*
* @param list list
* @return list的json字符串
*/
public static String listToJson(List list) throws JsonProcessingException {
ObjectMapper mapper = new ObjectMapper();
return mapper.writeValueAsString(list);
}
/**
* 对象转成json字符串
*
* @param object 对象
* @return 对象的json字符串
*/
public static String objectToJson(Object object) throws JsonProcessingException {
ObjectMapper mapper = new ObjectMapper();
return mapper.writeValueAsString(object);
}
/**
* 将json字符串转换成java对象
*
* @param json 准备转换的json字符串
* @param cls 准备转换的类
* @return
* @throws Exception
*/
public static Object jsonToBean(String json, Class<?> cls) throws Exception {
try {
ObjectMapper objectMapper = getMapperInstance(false);
Object vo = objectMapper.readValue(json, cls);
return vo;
} catch (Exception e) {
throw new Exception(e.getMessage());
}
}
/**
* 将json字符串转换成java对象
*
* @param json 准备转换的json字符串
* @param cls 准备转换的类
* @param createNew ObjectMapper实例方式:true,新实例;false,存在的mapper实例
* @return
* @throws Exception
*/
public static Object jsonToBean(String json, Class<?> cls, Boolean createNew) throws Exception {
try {
ObjectMapper objectMapper = getMapperInstance(createNew);
Object vo = objectMapper.readValue(json, cls);
return vo;
} catch (Exception e) {
throw new Exception(e.getMessage());
}
}
public static void writeOutJsonData(HttpServletResponse response, Object data) throws IOException {
try {
response.setContentType("Content-Type=text/plain; charset=UTF-8");// CharacterEncoding
PrintWriter out = response.getWriter();
if (data instanceof ArrayList) {
//JSONArray jsonArray = JSONArray.fromObject(data);
out.write(JsonUtil.listToJson((List) data).toString());
} else {
/* JSONObject jsonObject = new JSONObject();
jsonObject.put("result", data);
String jsonStr = jsonObject.toString();*/
out.write(JsonUtil.objectToJson(data));
}
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
🙏至此,感谢阅读🙏