# SpringBoot - 使用 ObjectMapper 完成 json 和 Java Object 互相轉換 ### ObjectMapper 是一款非常好用的 json 轉換工具,可以幫助我們完成 json 和 Java 的 Object 的互相轉換 ### 什麼是 Serialize 和 Deserialize? - Serialize : 將 Java Object 轉換成 json - Deserialize : 將 json 轉換成 Java Object ### 在 Spring Boot 裡使用 ObjectMapper ObjectMapper 是由 Jackson library 所提供的一個功能,所以只要在 maven 中加入 spring-boot-starter-web 的 dependency 就可以了 ```=\ <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> ``` ### Json 和 Java Object、List、Map 的互轉 ```java=\ import java.util.HashMap; import java.util.List; import java.util.Map; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; public class JSONUtils { private static final Logger log = LogManager.getLogger(JSONUtils.class); /** * 將物件轉成JSon String * @param value * @return */ public static String toJSONString(Object value) { try { ObjectMapper mapper = new ObjectMapper(); return mapper.writeValueAsString(value); } catch (Exception e) { log.debug("toJSONString fail, Object=" + value, e); return null; } } /** * 將JSon String轉成物件 * @param jsonString * @param object * @return */ public static <T> T fromJSONString(String jsonString, Class<T> object) { if (jsonString == null || object == null) { log.warn("fromJSONString format error"); return null; } try { ObjectMapper mapper = new ObjectMapper(); return mapper.readValue(jsonString, object); } catch (Exception e) { log.debug("fromJSONString fail, jsonString=" + jsonString + ", object=" + object, e); return null; } } /** * 將Map<String, Object>轉成JSon String * */ public static String readMapToJSON(HashMap<String, Object> map) { if (map == null || map.isEmpty() ) { log.warn("readMaptoJSON format error"); return null; } try { ObjectMapper mapper = new ObjectMapper(); return mapper.writeValueAsString(map); } catch (Exception e) { log.debug("readMaptoJSON fail, map= " + map, e); return null; } } /** * 將JSon String轉成Map<String, Object> * */ public static Map<String, Object> readJSONtoMap(String jsonString) { if (jsonString == null || jsonString.trim().length() == 0) { log.warn("readJSONtoMap format error"); return null; } try { ObjectMapper mapper = new ObjectMapper(); TypeReference<HashMap<String, Object>> typeRef = new TypeReference<HashMap<String, Object>>(){}; return mapper.readValue(jsonString, typeRef); } catch (Exception e) { log.debug("readJSONtoMap fail, jsonString=" + jsonString, e); return null; } } /** * 將List<Object>轉成JSon String * */ public static String readListToJSON(List<Object> list) { if (list == null || list.isEmpty() ) { log.warn("readListToJSON format error"); return null; } try { ObjectMapper mapper = new ObjectMapper(); return mapper.writeValueAsString(list); } catch (Exception e) { log.debug("readListToJSON fail, list=" + list, e); return null; } } /** * 將JSon String轉成 List<Object> * */ public static List< Object> readJSONtoList(String jsonString) { if (jsonString == null || jsonString.trim().length() == 0) { log.warn("readJSONtoList format error"); return null; } try { ObjectMapper mapper = new ObjectMapper(); TypeReference<List< Object>> typeRef = new TypeReference<List< Object>>(){}; return mapper.readValue(jsonString, typeRef); } catch (Exception e) { log.debug("readJSONtoList fail, jsonString=" + jsonString, e); return null; } } } ```