package com.sandu.ximon.admin.utils; import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.SerializationFeature; import jdk.nashorn.internal.ir.ObjectNode; import java.io.IOException; public class JsonUtil { private static ObjectMapper objectMapper; static { objectMapper = new ObjectMapper(); // 璁剧疆FAIL_ON_EMPTY_BEANS灞炴�э紝褰撳簭鍒楀寲绌哄璞′笉瑕佹姏寮傚父 objectMapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false); // 璁剧疆FAIL_ON_UNKNOWN_PROPERTIES灞炴�э紝褰揓SON瀛楃涓蹭腑瀛樺湪Java瀵硅薄娌℃湁鐨勫睘鎬э紝蹇界暐 objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); } /** * Convert Object to JsonString * * @param jsonObj * @return */ public static String jsonObj2Sting(Object jsonObj) { String jsonString = null; try { jsonString = objectMapper.writeValueAsString(jsonObj); } catch (IOException e) { System.out.printf("pasre json Object[{}] to string failed.",jsonString); } return jsonString; } /** * Convert JsonString to Simple Object * * @param jsonString * @param cls * @return */ public static T jsonString2SimpleObj(String jsonString, Class cls) { T jsonObj = null; try { jsonObj = objectMapper.readValue(jsonString, cls); } catch (IOException e) { System.out.printf("pasre json Object[{}] to string failed.",jsonString); } return jsonObj; } /** * Method that will convert object to the ObjectNode. * * @param object * the source data; if null, will return null. * @return the ObjectNode data after converted. * @throws Exception */ public static ObjectNode convertObject2ObjectNode(T object) throws Exception { if (null == object) { return null; } ObjectNode objectNode = null; if (object instanceof String) { objectNode = convertJsonStringToObject((String) object, ObjectNode.class); } else { objectNode = convertValue(object, ObjectNode.class); } return objectNode; } /** * Method that will convert the json string to destination by the type(cls). * * @param jsonString * the source json string; if null, will return null. * @param cls * the destination data type. * @return * @throws Exception */ public static T convertJsonStringToObject(String jsonString, Class cls) throws Exception { if (StringUtil.strIsNullOrEmpty(jsonString)) { return null; } try { T object = objectMapper.readValue(jsonString, cls); return object; } catch (Exception e) { throw new Exception(e); } } /** * Method that will convert from given value into instance of given value * type. * * @param fromValue * @param toValueType * @return * @throws Exception */ private static T convertValue(Object fromValue, Class toValueType) throws Exception { try { return objectMapper.convertValue(fromValue, toValueType); } catch (IllegalArgumentException e) { throw new Exception(e); } } }